1// +build go1.13
2
3// Copyright (c) Microsoft Corporation. All rights reserved.
4// Licensed under the MIT License. See License.txt in the project root for license information.
5// Code generated by Microsoft (R) AutoRest Code Generator.
6// Changes may cause incorrect behavior and will be lost if the code is regenerated.
7
8package armnetwork
9
10import (
11	"encoding/json"
12	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
13	"reflect"
14	"time"
15)
16
17// AADAuthenticationParameters - AAD Vpn authentication type related parameters.
18type AADAuthenticationParameters struct {
19	// AAD Vpn authentication parameter AAD audience.
20	AADAudience *string `json:"aadAudience,omitempty"`
21
22	// AAD Vpn authentication parameter AAD issuer.
23	AADIssuer *string `json:"aadIssuer,omitempty"`
24
25	// AAD Vpn authentication parameter AAD tenant.
26	AADTenant *string `json:"aadTenant,omitempty"`
27}
28
29// AddressSpace contains an array of IP address ranges that can be used by subnets of the virtual network.
30type AddressSpace struct {
31	// A list of address blocks reserved for this virtual network in CIDR notation.
32	AddressPrefixes []*string `json:"addressPrefixes,omitempty"`
33}
34
35// MarshalJSON implements the json.Marshaller interface for type AddressSpace.
36func (a AddressSpace) MarshalJSON() ([]byte, error) {
37	objectMap := make(map[string]interface{})
38	populate(objectMap, "addressPrefixes", a.AddressPrefixes)
39	return json.Marshal(objectMap)
40}
41
42// ApplicationGateway - Application gateway resource.
43type ApplicationGateway struct {
44	Resource
45	// The identity of the application gateway, if configured.
46	Identity *ManagedServiceIdentity `json:"identity,omitempty"`
47
48	// Properties of the application gateway.
49	Properties *ApplicationGatewayPropertiesFormat `json:"properties,omitempty"`
50
51	// A list of availability zones denoting where the resource needs to come from.
52	Zones []*string `json:"zones,omitempty"`
53
54	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
55	Etag *string `json:"etag,omitempty" azure:"ro"`
56}
57
58// MarshalJSON implements the json.Marshaller interface for type ApplicationGateway.
59func (a ApplicationGateway) MarshalJSON() ([]byte, error) {
60	objectMap := a.Resource.marshalInternal()
61	populate(objectMap, "etag", a.Etag)
62	populate(objectMap, "identity", a.Identity)
63	populate(objectMap, "properties", a.Properties)
64	populate(objectMap, "zones", a.Zones)
65	return json.Marshal(objectMap)
66}
67
68// ApplicationGatewayAuthenticationCertificate - Authentication certificates of an application gateway.
69type ApplicationGatewayAuthenticationCertificate struct {
70	SubResource
71	// Name of the authentication certificate that is unique within an Application Gateway.
72	Name *string `json:"name,omitempty"`
73
74	// Properties of the application gateway authentication certificate.
75	Properties *ApplicationGatewayAuthenticationCertificatePropertiesFormat `json:"properties,omitempty"`
76
77	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
78	Etag *string `json:"etag,omitempty" azure:"ro"`
79
80	// READ-ONLY; Type of the resource.
81	Type *string `json:"type,omitempty" azure:"ro"`
82}
83
84// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayAuthenticationCertificate.
85func (a ApplicationGatewayAuthenticationCertificate) MarshalJSON() ([]byte, error) {
86	objectMap := a.SubResource.marshalInternal()
87	populate(objectMap, "etag", a.Etag)
88	populate(objectMap, "name", a.Name)
89	populate(objectMap, "properties", a.Properties)
90	populate(objectMap, "type", a.Type)
91	return json.Marshal(objectMap)
92}
93
94// ApplicationGatewayAuthenticationCertificatePropertiesFormat - Authentication certificates properties of an application gateway.
95type ApplicationGatewayAuthenticationCertificatePropertiesFormat struct {
96	// Certificate public data.
97	Data *string `json:"data,omitempty"`
98
99	// READ-ONLY; The provisioning state of the authentication certificate resource.
100	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
101}
102
103// ApplicationGatewayAutoscaleConfiguration - Application Gateway autoscale configuration.
104type ApplicationGatewayAutoscaleConfiguration struct {
105	// REQUIRED; Lower bound on number of Application Gateway capacity.
106	MinCapacity *int32 `json:"minCapacity,omitempty"`
107
108	// Upper bound on number of Application Gateway capacity.
109	MaxCapacity *int32 `json:"maxCapacity,omitempty"`
110}
111
112// ApplicationGatewayAvailableSSLOptions - Response for ApplicationGatewayAvailableSslOptions API service call.
113type ApplicationGatewayAvailableSSLOptions struct {
114	Resource
115	// Properties of the application gateway available SSL options.
116	Properties *ApplicationGatewayAvailableSSLOptionsPropertiesFormat `json:"properties,omitempty"`
117}
118
119// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayAvailableSSLOptions.
120func (a ApplicationGatewayAvailableSSLOptions) MarshalJSON() ([]byte, error) {
121	objectMap := a.Resource.marshalInternal()
122	populate(objectMap, "properties", a.Properties)
123	return json.Marshal(objectMap)
124}
125
126// ApplicationGatewayAvailableSSLOptionsPropertiesFormat - Properties of ApplicationGatewayAvailableSslOptions.
127type ApplicationGatewayAvailableSSLOptionsPropertiesFormat struct {
128	// List of available Ssl cipher suites.
129	AvailableCipherSuites []*ApplicationGatewaySSLCipherSuite `json:"availableCipherSuites,omitempty"`
130
131	// List of available Ssl protocols.
132	AvailableProtocols []*ApplicationGatewaySSLProtocol `json:"availableProtocols,omitempty"`
133
134	// Name of the Ssl predefined policy applied by default to application gateway.
135	DefaultPolicy *ApplicationGatewaySSLPolicyName `json:"defaultPolicy,omitempty"`
136
137	// List of available Ssl predefined policy.
138	PredefinedPolicies []*SubResource `json:"predefinedPolicies,omitempty"`
139}
140
141// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayAvailableSSLOptionsPropertiesFormat.
142func (a ApplicationGatewayAvailableSSLOptionsPropertiesFormat) MarshalJSON() ([]byte, error) {
143	objectMap := make(map[string]interface{})
144	populate(objectMap, "availableCipherSuites", a.AvailableCipherSuites)
145	populate(objectMap, "availableProtocols", a.AvailableProtocols)
146	populate(objectMap, "defaultPolicy", a.DefaultPolicy)
147	populate(objectMap, "predefinedPolicies", a.PredefinedPolicies)
148	return json.Marshal(objectMap)
149}
150
151// ApplicationGatewayAvailableSSLPredefinedPolicies - Response for ApplicationGatewayAvailableSslOptions API service call.
152type ApplicationGatewayAvailableSSLPredefinedPolicies struct {
153	// URL to get the next set of results.
154	NextLink *string `json:"nextLink,omitempty"`
155
156	// List of available Ssl predefined policy.
157	Value []*ApplicationGatewaySSLPredefinedPolicy `json:"value,omitempty"`
158}
159
160// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayAvailableSSLPredefinedPolicies.
161func (a ApplicationGatewayAvailableSSLPredefinedPolicies) MarshalJSON() ([]byte, error) {
162	objectMap := make(map[string]interface{})
163	populate(objectMap, "nextLink", a.NextLink)
164	populate(objectMap, "value", a.Value)
165	return json.Marshal(objectMap)
166}
167
168// ApplicationGatewayAvailableWafRuleSetsResult - Response for ApplicationGatewayAvailableWafRuleSets API service call.
169type ApplicationGatewayAvailableWafRuleSetsResult struct {
170	// The list of application gateway rule sets.
171	Value []*ApplicationGatewayFirewallRuleSet `json:"value,omitempty"`
172}
173
174// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayAvailableWafRuleSetsResult.
175func (a ApplicationGatewayAvailableWafRuleSetsResult) MarshalJSON() ([]byte, error) {
176	objectMap := make(map[string]interface{})
177	populate(objectMap, "value", a.Value)
178	return json.Marshal(objectMap)
179}
180
181// ApplicationGatewayBackendAddress - Backend address of an application gateway.
182type ApplicationGatewayBackendAddress struct {
183	// Fully qualified domain name (FQDN).
184	Fqdn *string `json:"fqdn,omitempty"`
185
186	// IP address.
187	IPAddress *string `json:"ipAddress,omitempty"`
188}
189
190// ApplicationGatewayBackendAddressPool - Backend Address Pool of an application gateway.
191type ApplicationGatewayBackendAddressPool struct {
192	SubResource
193	// Name of the backend address pool that is unique within an Application Gateway.
194	Name *string `json:"name,omitempty"`
195
196	// Properties of the application gateway backend address pool.
197	Properties *ApplicationGatewayBackendAddressPoolPropertiesFormat `json:"properties,omitempty"`
198
199	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
200	Etag *string `json:"etag,omitempty" azure:"ro"`
201
202	// READ-ONLY; Type of the resource.
203	Type *string `json:"type,omitempty" azure:"ro"`
204}
205
206// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendAddressPool.
207func (a ApplicationGatewayBackendAddressPool) MarshalJSON() ([]byte, error) {
208	objectMap := a.SubResource.marshalInternal()
209	populate(objectMap, "etag", a.Etag)
210	populate(objectMap, "name", a.Name)
211	populate(objectMap, "properties", a.Properties)
212	populate(objectMap, "type", a.Type)
213	return json.Marshal(objectMap)
214}
215
216// ApplicationGatewayBackendAddressPoolPropertiesFormat - Properties of Backend Address Pool of an application gateway.
217type ApplicationGatewayBackendAddressPoolPropertiesFormat struct {
218	// Backend addresses.
219	BackendAddresses []*ApplicationGatewayBackendAddress `json:"backendAddresses,omitempty"`
220
221	// READ-ONLY; Collection of references to IPs defined in network interfaces.
222	BackendIPConfigurations []*NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty" azure:"ro"`
223
224	// READ-ONLY; The provisioning state of the backend address pool resource.
225	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
226}
227
228// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendAddressPoolPropertiesFormat.
229func (a ApplicationGatewayBackendAddressPoolPropertiesFormat) MarshalJSON() ([]byte, error) {
230	objectMap := make(map[string]interface{})
231	populate(objectMap, "backendAddresses", a.BackendAddresses)
232	populate(objectMap, "backendIPConfigurations", a.BackendIPConfigurations)
233	populate(objectMap, "provisioningState", a.ProvisioningState)
234	return json.Marshal(objectMap)
235}
236
237// ApplicationGatewayBackendHTTPSettings - Backend address pool settings of an application gateway.
238type ApplicationGatewayBackendHTTPSettings struct {
239	SubResource
240	// Name of the backend http settings that is unique within an Application Gateway.
241	Name *string `json:"name,omitempty"`
242
243	// Properties of the application gateway backend HTTP settings.
244	Properties *ApplicationGatewayBackendHTTPSettingsPropertiesFormat `json:"properties,omitempty"`
245
246	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
247	Etag *string `json:"etag,omitempty" azure:"ro"`
248
249	// READ-ONLY; Type of the resource.
250	Type *string `json:"type,omitempty" azure:"ro"`
251}
252
253// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendHTTPSettings.
254func (a ApplicationGatewayBackendHTTPSettings) MarshalJSON() ([]byte, error) {
255	objectMap := a.SubResource.marshalInternal()
256	populate(objectMap, "etag", a.Etag)
257	populate(objectMap, "name", a.Name)
258	populate(objectMap, "properties", a.Properties)
259	populate(objectMap, "type", a.Type)
260	return json.Marshal(objectMap)
261}
262
263// ApplicationGatewayBackendHTTPSettingsPropertiesFormat - Properties of Backend address pool settings of an application gateway.
264type ApplicationGatewayBackendHTTPSettingsPropertiesFormat struct {
265	// Cookie name to use for the affinity cookie.
266	AffinityCookieName *string `json:"affinityCookieName,omitempty"`
267
268	// Array of references to application gateway authentication certificates.
269	AuthenticationCertificates []*SubResource `json:"authenticationCertificates,omitempty"`
270
271	// Connection draining of the backend http settings resource.
272	ConnectionDraining *ApplicationGatewayConnectionDraining `json:"connectionDraining,omitempty"`
273
274	// Cookie based affinity.
275	CookieBasedAffinity *ApplicationGatewayCookieBasedAffinity `json:"cookieBasedAffinity,omitempty"`
276
277	// Host header to be sent to the backend servers.
278	HostName *string `json:"hostName,omitempty"`
279
280	// Path which should be used as a prefix for all HTTP requests. Null means no path will be prefixed. Default value is null.
281	Path *string `json:"path,omitempty"`
282
283	// Whether to pick host header should be picked from the host name of the backend server. Default value is false.
284	PickHostNameFromBackendAddress *bool `json:"pickHostNameFromBackendAddress,omitempty"`
285
286	// The destination port on the backend.
287	Port *int32 `json:"port,omitempty"`
288
289	// Probe resource of an application gateway.
290	Probe *SubResource `json:"probe,omitempty"`
291
292	// Whether the probe is enabled. Default value is false.
293	ProbeEnabled *bool `json:"probeEnabled,omitempty"`
294
295	// The protocol used to communicate with the backend.
296	Protocol *ApplicationGatewayProtocol `json:"protocol,omitempty"`
297
298	// Request timeout in seconds. Application Gateway will fail the request if response is not received within RequestTimeout. Acceptable values are from 1
299	// second to 86400 seconds.
300	RequestTimeout *int32 `json:"requestTimeout,omitempty"`
301
302	// Array of references to application gateway trusted root certificates.
303	TrustedRootCertificates []*SubResource `json:"trustedRootCertificates,omitempty"`
304
305	// READ-ONLY; The provisioning state of the backend HTTP settings resource.
306	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
307}
308
309// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendHTTPSettingsPropertiesFormat.
310func (a ApplicationGatewayBackendHTTPSettingsPropertiesFormat) MarshalJSON() ([]byte, error) {
311	objectMap := make(map[string]interface{})
312	populate(objectMap, "affinityCookieName", a.AffinityCookieName)
313	populate(objectMap, "authenticationCertificates", a.AuthenticationCertificates)
314	populate(objectMap, "connectionDraining", a.ConnectionDraining)
315	populate(objectMap, "cookieBasedAffinity", a.CookieBasedAffinity)
316	populate(objectMap, "hostName", a.HostName)
317	populate(objectMap, "path", a.Path)
318	populate(objectMap, "pickHostNameFromBackendAddress", a.PickHostNameFromBackendAddress)
319	populate(objectMap, "port", a.Port)
320	populate(objectMap, "probe", a.Probe)
321	populate(objectMap, "probeEnabled", a.ProbeEnabled)
322	populate(objectMap, "protocol", a.Protocol)
323	populate(objectMap, "provisioningState", a.ProvisioningState)
324	populate(objectMap, "requestTimeout", a.RequestTimeout)
325	populate(objectMap, "trustedRootCertificates", a.TrustedRootCertificates)
326	return json.Marshal(objectMap)
327}
328
329// ApplicationGatewayBackendHealth - Response for ApplicationGatewayBackendHealth API service call.
330type ApplicationGatewayBackendHealth struct {
331	// A list of ApplicationGatewayBackendHealthPool resources.
332	BackendAddressPools []*ApplicationGatewayBackendHealthPool `json:"backendAddressPools,omitempty"`
333}
334
335// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendHealth.
336func (a ApplicationGatewayBackendHealth) MarshalJSON() ([]byte, error) {
337	objectMap := make(map[string]interface{})
338	populate(objectMap, "backendAddressPools", a.BackendAddressPools)
339	return json.Marshal(objectMap)
340}
341
342// ApplicationGatewayBackendHealthHTTPSettings - Application gateway BackendHealthHttp settings.
343type ApplicationGatewayBackendHealthHTTPSettings struct {
344	// Reference to an ApplicationGatewayBackendHttpSettings resource.
345	BackendHTTPSettings *ApplicationGatewayBackendHTTPSettings `json:"backendHttpSettings,omitempty"`
346
347	// List of ApplicationGatewayBackendHealthServer resources.
348	Servers []*ApplicationGatewayBackendHealthServer `json:"servers,omitempty"`
349}
350
351// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendHealthHTTPSettings.
352func (a ApplicationGatewayBackendHealthHTTPSettings) MarshalJSON() ([]byte, error) {
353	objectMap := make(map[string]interface{})
354	populate(objectMap, "backendHttpSettings", a.BackendHTTPSettings)
355	populate(objectMap, "servers", a.Servers)
356	return json.Marshal(objectMap)
357}
358
359// ApplicationGatewayBackendHealthOnDemand - Result of on demand test probe.
360type ApplicationGatewayBackendHealthOnDemand struct {
361	// Reference to an ApplicationGatewayBackendAddressPool resource.
362	BackendAddressPool *ApplicationGatewayBackendAddressPool `json:"backendAddressPool,omitempty"`
363
364	// Application gateway BackendHealthHttp settings.
365	BackendHealthHTTPSettings *ApplicationGatewayBackendHealthHTTPSettings `json:"backendHealthHttpSettings,omitempty"`
366}
367
368// ApplicationGatewayBackendHealthPool - Application gateway BackendHealth pool.
369type ApplicationGatewayBackendHealthPool struct {
370	// Reference to an ApplicationGatewayBackendAddressPool resource.
371	BackendAddressPool *ApplicationGatewayBackendAddressPool `json:"backendAddressPool,omitempty"`
372
373	// List of ApplicationGatewayBackendHealthHttpSettings resources.
374	BackendHTTPSettingsCollection []*ApplicationGatewayBackendHealthHTTPSettings `json:"backendHttpSettingsCollection,omitempty"`
375}
376
377// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayBackendHealthPool.
378func (a ApplicationGatewayBackendHealthPool) MarshalJSON() ([]byte, error) {
379	objectMap := make(map[string]interface{})
380	populate(objectMap, "backendAddressPool", a.BackendAddressPool)
381	populate(objectMap, "backendHttpSettingsCollection", a.BackendHTTPSettingsCollection)
382	return json.Marshal(objectMap)
383}
384
385// ApplicationGatewayBackendHealthServer - Application gateway backendhealth http settings.
386type ApplicationGatewayBackendHealthServer struct {
387	// IP address or FQDN of backend server.
388	Address *string `json:"address,omitempty"`
389
390	// Health of backend server.
391	Health *ApplicationGatewayBackendHealthServerHealth `json:"health,omitempty"`
392
393	// Health Probe Log.
394	HealthProbeLog *string `json:"healthProbeLog,omitempty"`
395
396	// Reference to IP configuration of backend server.
397	IPConfiguration *NetworkInterfaceIPConfiguration `json:"ipConfiguration,omitempty"`
398}
399
400// ApplicationGatewayClientAuthConfiguration - Application gateway client authentication configuration.
401type ApplicationGatewayClientAuthConfiguration struct {
402	// Verify client certificate issuer name on the application gateway.
403	VerifyClientCertIssuerDN *bool `json:"verifyClientCertIssuerDN,omitempty"`
404}
405
406// ApplicationGatewayConnectionDraining - Connection draining allows open connections to a backend server to be active for a specified time after the backend
407// server got removed from the configuration.
408type ApplicationGatewayConnectionDraining struct {
409	// REQUIRED; The number of seconds connection draining is active. Acceptable values are from 1 second to 3600 seconds.
410	DrainTimeoutInSec *int32 `json:"drainTimeoutInSec,omitempty"`
411
412	// REQUIRED; Whether connection draining is enabled or not.
413	Enabled *bool `json:"enabled,omitempty"`
414}
415
416// ApplicationGatewayCustomError - Customer error of an application gateway.
417type ApplicationGatewayCustomError struct {
418	// Error page URL of the application gateway customer error.
419	CustomErrorPageURL *string `json:"customErrorPageUrl,omitempty"`
420
421	// Status code of the application gateway customer error.
422	StatusCode *ApplicationGatewayCustomErrorStatusCode `json:"statusCode,omitempty"`
423}
424
425// ApplicationGatewayFirewallDisabledRuleGroup - Allows to disable rules within a rule group or an entire rule group.
426type ApplicationGatewayFirewallDisabledRuleGroup struct {
427	// REQUIRED; The name of the rule group that will be disabled.
428	RuleGroupName *string `json:"ruleGroupName,omitempty"`
429
430	// The list of rules that will be disabled. If null, all rules of the rule group will be disabled.
431	Rules []*int32 `json:"rules,omitempty"`
432}
433
434// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayFirewallDisabledRuleGroup.
435func (a ApplicationGatewayFirewallDisabledRuleGroup) MarshalJSON() ([]byte, error) {
436	objectMap := make(map[string]interface{})
437	populate(objectMap, "ruleGroupName", a.RuleGroupName)
438	populate(objectMap, "rules", a.Rules)
439	return json.Marshal(objectMap)
440}
441
442// ApplicationGatewayFirewallExclusion - Allow to exclude some variable satisfy the condition for the WAF check.
443type ApplicationGatewayFirewallExclusion struct {
444	// REQUIRED; The variable to be excluded.
445	MatchVariable *string `json:"matchVariable,omitempty"`
446
447	// REQUIRED; When matchVariable is a collection, operator used to specify which elements in the collection this exclusion applies to.
448	Selector *string `json:"selector,omitempty"`
449
450	// REQUIRED; When matchVariable is a collection, operate on the selector to specify which elements in the collection this exclusion applies to.
451	SelectorMatchOperator *string `json:"selectorMatchOperator,omitempty"`
452}
453
454// ApplicationGatewayFirewallRule - A web application firewall rule.
455type ApplicationGatewayFirewallRule struct {
456	// REQUIRED; The identifier of the web application firewall rule.
457	RuleID *int32 `json:"ruleId,omitempty"`
458
459	// The description of the web application firewall rule.
460	Description *string `json:"description,omitempty"`
461}
462
463// ApplicationGatewayFirewallRuleGroup - A web application firewall rule group.
464type ApplicationGatewayFirewallRuleGroup struct {
465	// REQUIRED; The name of the web application firewall rule group.
466	RuleGroupName *string `json:"ruleGroupName,omitempty"`
467
468	// REQUIRED; The rules of the web application firewall rule group.
469	Rules []*ApplicationGatewayFirewallRule `json:"rules,omitempty"`
470
471	// The description of the web application firewall rule group.
472	Description *string `json:"description,omitempty"`
473}
474
475// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayFirewallRuleGroup.
476func (a ApplicationGatewayFirewallRuleGroup) MarshalJSON() ([]byte, error) {
477	objectMap := make(map[string]interface{})
478	populate(objectMap, "description", a.Description)
479	populate(objectMap, "ruleGroupName", a.RuleGroupName)
480	populate(objectMap, "rules", a.Rules)
481	return json.Marshal(objectMap)
482}
483
484// ApplicationGatewayFirewallRuleSet - A web application firewall rule set.
485type ApplicationGatewayFirewallRuleSet struct {
486	Resource
487	// Properties of the application gateway firewall rule set.
488	Properties *ApplicationGatewayFirewallRuleSetPropertiesFormat `json:"properties,omitempty"`
489}
490
491// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayFirewallRuleSet.
492func (a ApplicationGatewayFirewallRuleSet) MarshalJSON() ([]byte, error) {
493	objectMap := a.Resource.marshalInternal()
494	populate(objectMap, "properties", a.Properties)
495	return json.Marshal(objectMap)
496}
497
498// ApplicationGatewayFirewallRuleSetPropertiesFormat - Properties of the web application firewall rule set.
499type ApplicationGatewayFirewallRuleSetPropertiesFormat struct {
500	// REQUIRED; The rule groups of the web application firewall rule set.
501	RuleGroups []*ApplicationGatewayFirewallRuleGroup `json:"ruleGroups,omitempty"`
502
503	// REQUIRED; The type of the web application firewall rule set.
504	RuleSetType *string `json:"ruleSetType,omitempty"`
505
506	// REQUIRED; The version of the web application firewall rule set type.
507	RuleSetVersion *string `json:"ruleSetVersion,omitempty"`
508
509	// READ-ONLY; The provisioning state of the web application firewall rule set.
510	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
511}
512
513// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayFirewallRuleSetPropertiesFormat.
514func (a ApplicationGatewayFirewallRuleSetPropertiesFormat) MarshalJSON() ([]byte, error) {
515	objectMap := make(map[string]interface{})
516	populate(objectMap, "provisioningState", a.ProvisioningState)
517	populate(objectMap, "ruleGroups", a.RuleGroups)
518	populate(objectMap, "ruleSetType", a.RuleSetType)
519	populate(objectMap, "ruleSetVersion", a.RuleSetVersion)
520	return json.Marshal(objectMap)
521}
522
523// ApplicationGatewayFrontendIPConfiguration - Frontend IP configuration of an application gateway.
524type ApplicationGatewayFrontendIPConfiguration struct {
525	SubResource
526	// Name of the frontend IP configuration that is unique within an Application Gateway.
527	Name *string `json:"name,omitempty"`
528
529	// Properties of the application gateway frontend IP configuration.
530	Properties *ApplicationGatewayFrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"`
531
532	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
533	Etag *string `json:"etag,omitempty" azure:"ro"`
534
535	// READ-ONLY; Type of the resource.
536	Type *string `json:"type,omitempty" azure:"ro"`
537}
538
539// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayFrontendIPConfiguration.
540func (a ApplicationGatewayFrontendIPConfiguration) MarshalJSON() ([]byte, error) {
541	objectMap := a.SubResource.marshalInternal()
542	populate(objectMap, "etag", a.Etag)
543	populate(objectMap, "name", a.Name)
544	populate(objectMap, "properties", a.Properties)
545	populate(objectMap, "type", a.Type)
546	return json.Marshal(objectMap)
547}
548
549// ApplicationGatewayFrontendIPConfigurationPropertiesFormat - Properties of Frontend IP configuration of an application gateway.
550type ApplicationGatewayFrontendIPConfigurationPropertiesFormat struct {
551	// PrivateIPAddress of the network interface IP Configuration.
552	PrivateIPAddress *string `json:"privateIPAddress,omitempty"`
553
554	// The private IP address allocation method.
555	PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"`
556
557	// Reference to the application gateway private link configuration.
558	PrivateLinkConfiguration *SubResource `json:"privateLinkConfiguration,omitempty"`
559
560	// Reference to the PublicIP resource.
561	PublicIPAddress *SubResource `json:"publicIPAddress,omitempty"`
562
563	// Reference to the subnet resource.
564	Subnet *SubResource `json:"subnet,omitempty"`
565
566	// READ-ONLY; The provisioning state of the frontend IP configuration resource.
567	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
568}
569
570// ApplicationGatewayFrontendPort - Frontend port of an application gateway.
571type ApplicationGatewayFrontendPort struct {
572	SubResource
573	// Name of the frontend port that is unique within an Application Gateway.
574	Name *string `json:"name,omitempty"`
575
576	// Properties of the application gateway frontend port.
577	Properties *ApplicationGatewayFrontendPortPropertiesFormat `json:"properties,omitempty"`
578
579	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
580	Etag *string `json:"etag,omitempty" azure:"ro"`
581
582	// READ-ONLY; Type of the resource.
583	Type *string `json:"type,omitempty" azure:"ro"`
584}
585
586// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayFrontendPort.
587func (a ApplicationGatewayFrontendPort) MarshalJSON() ([]byte, error) {
588	objectMap := a.SubResource.marshalInternal()
589	populate(objectMap, "etag", a.Etag)
590	populate(objectMap, "name", a.Name)
591	populate(objectMap, "properties", a.Properties)
592	populate(objectMap, "type", a.Type)
593	return json.Marshal(objectMap)
594}
595
596// ApplicationGatewayFrontendPortPropertiesFormat - Properties of Frontend port of an application gateway.
597type ApplicationGatewayFrontendPortPropertiesFormat struct {
598	// Frontend port.
599	Port *int32 `json:"port,omitempty"`
600
601	// READ-ONLY; The provisioning state of the frontend port resource.
602	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
603}
604
605// ApplicationGatewayHTTPListener - Http listener of an application gateway.
606type ApplicationGatewayHTTPListener struct {
607	SubResource
608	// Name of the HTTP listener that is unique within an Application Gateway.
609	Name *string `json:"name,omitempty"`
610
611	// Properties of the application gateway HTTP listener.
612	Properties *ApplicationGatewayHTTPListenerPropertiesFormat `json:"properties,omitempty"`
613
614	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
615	Etag *string `json:"etag,omitempty" azure:"ro"`
616
617	// READ-ONLY; Type of the resource.
618	Type *string `json:"type,omitempty" azure:"ro"`
619}
620
621// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayHTTPListener.
622func (a ApplicationGatewayHTTPListener) MarshalJSON() ([]byte, error) {
623	objectMap := a.SubResource.marshalInternal()
624	populate(objectMap, "etag", a.Etag)
625	populate(objectMap, "name", a.Name)
626	populate(objectMap, "properties", a.Properties)
627	populate(objectMap, "type", a.Type)
628	return json.Marshal(objectMap)
629}
630
631// ApplicationGatewayHTTPListenerPropertiesFormat - Properties of HTTP listener of an application gateway.
632type ApplicationGatewayHTTPListenerPropertiesFormat struct {
633	// Custom error configurations of the HTTP listener.
634	CustomErrorConfigurations []*ApplicationGatewayCustomError `json:"customErrorConfigurations,omitempty"`
635
636	// Reference to the FirewallPolicy resource.
637	FirewallPolicy *SubResource `json:"firewallPolicy,omitempty"`
638
639	// Frontend IP configuration resource of an application gateway.
640	FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"`
641
642	// Frontend port resource of an application gateway.
643	FrontendPort *SubResource `json:"frontendPort,omitempty"`
644
645	// Host name of HTTP listener.
646	HostName *string `json:"hostName,omitempty"`
647
648	// List of Host names for HTTP Listener that allows special wildcard characters as well.
649	HostNames []*string `json:"hostNames,omitempty"`
650
651	// Protocol of the HTTP listener.
652	Protocol *ApplicationGatewayProtocol `json:"protocol,omitempty"`
653
654	// Applicable only if protocol is https. Enables SNI for multi-hosting.
655	RequireServerNameIndication *bool `json:"requireServerNameIndication,omitempty"`
656
657	// SSL certificate resource of an application gateway.
658	SSLCertificate *SubResource `json:"sslCertificate,omitempty"`
659
660	// SSL profile resource of the application gateway.
661	SSLProfile *SubResource `json:"sslProfile,omitempty"`
662
663	// READ-ONLY; The provisioning state of the HTTP listener resource.
664	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
665}
666
667// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayHTTPListenerPropertiesFormat.
668func (a ApplicationGatewayHTTPListenerPropertiesFormat) MarshalJSON() ([]byte, error) {
669	objectMap := make(map[string]interface{})
670	populate(objectMap, "customErrorConfigurations", a.CustomErrorConfigurations)
671	populate(objectMap, "firewallPolicy", a.FirewallPolicy)
672	populate(objectMap, "frontendIPConfiguration", a.FrontendIPConfiguration)
673	populate(objectMap, "frontendPort", a.FrontendPort)
674	populate(objectMap, "hostName", a.HostName)
675	populate(objectMap, "hostNames", a.HostNames)
676	populate(objectMap, "protocol", a.Protocol)
677	populate(objectMap, "provisioningState", a.ProvisioningState)
678	populate(objectMap, "requireServerNameIndication", a.RequireServerNameIndication)
679	populate(objectMap, "sslCertificate", a.SSLCertificate)
680	populate(objectMap, "sslProfile", a.SSLProfile)
681	return json.Marshal(objectMap)
682}
683
684// ApplicationGatewayHeaderConfiguration - Header configuration of the Actions set in Application Gateway.
685type ApplicationGatewayHeaderConfiguration struct {
686	// Header name of the header configuration.
687	HeaderName *string `json:"headerName,omitempty"`
688
689	// Header value of the header configuration.
690	HeaderValue *string `json:"headerValue,omitempty"`
691}
692
693// ApplicationGatewayIPConfiguration - IP configuration of an application gateway. Currently 1 public and 1 private IP configuration is allowed.
694type ApplicationGatewayIPConfiguration struct {
695	SubResource
696	// Name of the IP configuration that is unique within an Application Gateway.
697	Name *string `json:"name,omitempty"`
698
699	// Properties of the application gateway IP configuration.
700	Properties *ApplicationGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"`
701
702	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
703	Etag *string `json:"etag,omitempty" azure:"ro"`
704
705	// READ-ONLY; Type of the resource.
706	Type *string `json:"type,omitempty" azure:"ro"`
707}
708
709// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayIPConfiguration.
710func (a ApplicationGatewayIPConfiguration) MarshalJSON() ([]byte, error) {
711	objectMap := a.SubResource.marshalInternal()
712	populate(objectMap, "etag", a.Etag)
713	populate(objectMap, "name", a.Name)
714	populate(objectMap, "properties", a.Properties)
715	populate(objectMap, "type", a.Type)
716	return json.Marshal(objectMap)
717}
718
719// ApplicationGatewayIPConfigurationPropertiesFormat - Properties of IP configuration of an application gateway.
720type ApplicationGatewayIPConfigurationPropertiesFormat struct {
721	// Reference to the subnet resource. A subnet from where application gateway gets its private address.
722	Subnet *SubResource `json:"subnet,omitempty"`
723
724	// READ-ONLY; The provisioning state of the application gateway IP configuration resource.
725	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
726}
727
728// ApplicationGatewayListResult - Response for ListApplicationGateways API service call.
729type ApplicationGatewayListResult struct {
730	// URL to get the next set of results.
731	NextLink *string `json:"nextLink,omitempty"`
732
733	// List of an application gateways in a resource group.
734	Value []*ApplicationGateway `json:"value,omitempty"`
735}
736
737// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayListResult.
738func (a ApplicationGatewayListResult) MarshalJSON() ([]byte, error) {
739	objectMap := make(map[string]interface{})
740	populate(objectMap, "nextLink", a.NextLink)
741	populate(objectMap, "value", a.Value)
742	return json.Marshal(objectMap)
743}
744
745// ApplicationGatewayOnDemandProbe - Details of on demand test probe request.
746type ApplicationGatewayOnDemandProbe struct {
747	// Reference to backend pool of application gateway to which probe request will be sent.
748	BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"`
749
750	// Reference to backend http setting of application gateway to be used for test probe.
751	BackendHTTPSettings *SubResource `json:"backendHttpSettings,omitempty"`
752
753	// Host name to send the probe to.
754	Host *string `json:"host,omitempty"`
755
756	// Criterion for classifying a healthy probe response.
757	Match *ApplicationGatewayProbeHealthResponseMatch `json:"match,omitempty"`
758
759	// Relative path of probe. Valid path starts from '/'. Probe is sent to ://:.
760	Path *string `json:"path,omitempty"`
761
762	// Whether the host header should be picked from the backend http settings. Default value is false.
763	PickHostNameFromBackendHTTPSettings *bool `json:"pickHostNameFromBackendHttpSettings,omitempty"`
764
765	// The protocol used for the probe.
766	Protocol *ApplicationGatewayProtocol `json:"protocol,omitempty"`
767
768	// The probe timeout in seconds. Probe marked as failed if valid response is not received with this timeout period. Acceptable values are from 1 second
769	// to 86400 seconds.
770	Timeout *int32 `json:"timeout,omitempty"`
771}
772
773// ApplicationGatewayPathRule - Path rule of URL path map of an application gateway.
774type ApplicationGatewayPathRule struct {
775	SubResource
776	// Name of the path rule that is unique within an Application Gateway.
777	Name *string `json:"name,omitempty"`
778
779	// Properties of the application gateway path rule.
780	Properties *ApplicationGatewayPathRulePropertiesFormat `json:"properties,omitempty"`
781
782	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
783	Etag *string `json:"etag,omitempty" azure:"ro"`
784
785	// READ-ONLY; Type of the resource.
786	Type *string `json:"type,omitempty" azure:"ro"`
787}
788
789// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPathRule.
790func (a ApplicationGatewayPathRule) MarshalJSON() ([]byte, error) {
791	objectMap := a.SubResource.marshalInternal()
792	populate(objectMap, "etag", a.Etag)
793	populate(objectMap, "name", a.Name)
794	populate(objectMap, "properties", a.Properties)
795	populate(objectMap, "type", a.Type)
796	return json.Marshal(objectMap)
797}
798
799// ApplicationGatewayPathRulePropertiesFormat - Properties of path rule of an application gateway.
800type ApplicationGatewayPathRulePropertiesFormat struct {
801	// Backend address pool resource of URL path map path rule.
802	BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"`
803
804	// Backend http settings resource of URL path map path rule.
805	BackendHTTPSettings *SubResource `json:"backendHttpSettings,omitempty"`
806
807	// Reference to the FirewallPolicy resource.
808	FirewallPolicy *SubResource `json:"firewallPolicy,omitempty"`
809
810	// Path rules of URL path map.
811	Paths []*string `json:"paths,omitempty"`
812
813	// Redirect configuration resource of URL path map path rule.
814	RedirectConfiguration *SubResource `json:"redirectConfiguration,omitempty"`
815
816	// Rewrite rule set resource of URL path map path rule.
817	RewriteRuleSet *SubResource `json:"rewriteRuleSet,omitempty"`
818
819	// READ-ONLY; The provisioning state of the path rule resource.
820	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
821}
822
823// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPathRulePropertiesFormat.
824func (a ApplicationGatewayPathRulePropertiesFormat) MarshalJSON() ([]byte, error) {
825	objectMap := make(map[string]interface{})
826	populate(objectMap, "backendAddressPool", a.BackendAddressPool)
827	populate(objectMap, "backendHttpSettings", a.BackendHTTPSettings)
828	populate(objectMap, "firewallPolicy", a.FirewallPolicy)
829	populate(objectMap, "paths", a.Paths)
830	populate(objectMap, "provisioningState", a.ProvisioningState)
831	populate(objectMap, "redirectConfiguration", a.RedirectConfiguration)
832	populate(objectMap, "rewriteRuleSet", a.RewriteRuleSet)
833	return json.Marshal(objectMap)
834}
835
836// ApplicationGatewayPrivateEndpointConnection - Private Endpoint connection on an application gateway.
837type ApplicationGatewayPrivateEndpointConnection struct {
838	SubResource
839	// Name of the private endpoint connection on an application gateway.
840	Name *string `json:"name,omitempty"`
841
842	// Properties of the application gateway private endpoint connection.
843	Properties *ApplicationGatewayPrivateEndpointConnectionProperties `json:"properties,omitempty"`
844
845	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
846	Etag *string `json:"etag,omitempty" azure:"ro"`
847
848	// READ-ONLY; Type of the resource.
849	Type *string `json:"type,omitempty" azure:"ro"`
850}
851
852// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateEndpointConnection.
853func (a ApplicationGatewayPrivateEndpointConnection) MarshalJSON() ([]byte, error) {
854	objectMap := a.SubResource.marshalInternal()
855	populate(objectMap, "etag", a.Etag)
856	populate(objectMap, "name", a.Name)
857	populate(objectMap, "properties", a.Properties)
858	populate(objectMap, "type", a.Type)
859	return json.Marshal(objectMap)
860}
861
862// ApplicationGatewayPrivateEndpointConnectionListResult - Response for ListApplicationGatewayPrivateEndpointConnection API service call. Gets all private
863// endpoint connections for an application gateway.
864type ApplicationGatewayPrivateEndpointConnectionListResult struct {
865	// URL to get the next set of results.
866	NextLink *string `json:"nextLink,omitempty"`
867
868	// List of private endpoint connections on an application gateway.
869	Value []*ApplicationGatewayPrivateEndpointConnection `json:"value,omitempty"`
870}
871
872// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateEndpointConnectionListResult.
873func (a ApplicationGatewayPrivateEndpointConnectionListResult) MarshalJSON() ([]byte, error) {
874	objectMap := make(map[string]interface{})
875	populate(objectMap, "nextLink", a.NextLink)
876	populate(objectMap, "value", a.Value)
877	return json.Marshal(objectMap)
878}
879
880// ApplicationGatewayPrivateEndpointConnectionProperties - Properties of Private Link Resource of an application gateway.
881type ApplicationGatewayPrivateEndpointConnectionProperties struct {
882	// A collection of information about the state of the connection between service consumer and provider.
883	PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
884
885	// READ-ONLY; The consumer link id.
886	LinkIdentifier *string `json:"linkIdentifier,omitempty" azure:"ro"`
887
888	// READ-ONLY; The resource of private end point.
889	PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty" azure:"ro"`
890
891	// READ-ONLY; The provisioning state of the application gateway private endpoint connection resource.
892	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
893}
894
895// ApplicationGatewayPrivateEndpointConnectionsBeginDeleteOptions contains the optional parameters for the ApplicationGatewayPrivateEndpointConnections.BeginDelete
896// method.
897type ApplicationGatewayPrivateEndpointConnectionsBeginDeleteOptions struct {
898	// placeholder for future optional parameters
899}
900
901// ApplicationGatewayPrivateEndpointConnectionsBeginUpdateOptions contains the optional parameters for the ApplicationGatewayPrivateEndpointConnections.BeginUpdate
902// method.
903type ApplicationGatewayPrivateEndpointConnectionsBeginUpdateOptions struct {
904	// placeholder for future optional parameters
905}
906
907// ApplicationGatewayPrivateEndpointConnectionsGetOptions contains the optional parameters for the ApplicationGatewayPrivateEndpointConnections.Get method.
908type ApplicationGatewayPrivateEndpointConnectionsGetOptions struct {
909	// placeholder for future optional parameters
910}
911
912// ApplicationGatewayPrivateEndpointConnectionsListOptions contains the optional parameters for the ApplicationGatewayPrivateEndpointConnections.List method.
913type ApplicationGatewayPrivateEndpointConnectionsListOptions struct {
914	// placeholder for future optional parameters
915}
916
917// ApplicationGatewayPrivateLinkConfiguration - Private Link Configuration on an application gateway.
918type ApplicationGatewayPrivateLinkConfiguration struct {
919	SubResource
920	// Name of the private link configuration that is unique within an Application Gateway.
921	Name *string `json:"name,omitempty"`
922
923	// Properties of the application gateway private link configuration.
924	Properties *ApplicationGatewayPrivateLinkConfigurationProperties `json:"properties,omitempty"`
925
926	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
927	Etag *string `json:"etag,omitempty" azure:"ro"`
928
929	// READ-ONLY; Type of the resource.
930	Type *string `json:"type,omitempty" azure:"ro"`
931}
932
933// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateLinkConfiguration.
934func (a ApplicationGatewayPrivateLinkConfiguration) MarshalJSON() ([]byte, error) {
935	objectMap := a.SubResource.marshalInternal()
936	populate(objectMap, "etag", a.Etag)
937	populate(objectMap, "name", a.Name)
938	populate(objectMap, "properties", a.Properties)
939	populate(objectMap, "type", a.Type)
940	return json.Marshal(objectMap)
941}
942
943// ApplicationGatewayPrivateLinkConfigurationProperties - Properties of private link configuration on an application gateway.
944type ApplicationGatewayPrivateLinkConfigurationProperties struct {
945	// An array of application gateway private link ip configurations.
946	IPConfigurations []*ApplicationGatewayPrivateLinkIPConfiguration `json:"ipConfigurations,omitempty"`
947
948	// READ-ONLY; The provisioning state of the application gateway private link configuration.
949	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
950}
951
952// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateLinkConfigurationProperties.
953func (a ApplicationGatewayPrivateLinkConfigurationProperties) MarshalJSON() ([]byte, error) {
954	objectMap := make(map[string]interface{})
955	populate(objectMap, "ipConfigurations", a.IPConfigurations)
956	populate(objectMap, "provisioningState", a.ProvisioningState)
957	return json.Marshal(objectMap)
958}
959
960// ApplicationGatewayPrivateLinkIPConfiguration - The application gateway private link ip configuration.
961type ApplicationGatewayPrivateLinkIPConfiguration struct {
962	SubResource
963	// The name of application gateway private link ip configuration.
964	Name *string `json:"name,omitempty"`
965
966	// Properties of an application gateway private link ip configuration.
967	Properties *ApplicationGatewayPrivateLinkIPConfigurationProperties `json:"properties,omitempty"`
968
969	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
970	Etag *string `json:"etag,omitempty" azure:"ro"`
971
972	// READ-ONLY; The resource type.
973	Type *string `json:"type,omitempty" azure:"ro"`
974}
975
976// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateLinkIPConfiguration.
977func (a ApplicationGatewayPrivateLinkIPConfiguration) MarshalJSON() ([]byte, error) {
978	objectMap := a.SubResource.marshalInternal()
979	populate(objectMap, "etag", a.Etag)
980	populate(objectMap, "name", a.Name)
981	populate(objectMap, "properties", a.Properties)
982	populate(objectMap, "type", a.Type)
983	return json.Marshal(objectMap)
984}
985
986// ApplicationGatewayPrivateLinkIPConfigurationProperties - Properties of an application gateway private link IP configuration.
987type ApplicationGatewayPrivateLinkIPConfigurationProperties struct {
988	// Whether the ip configuration is primary or not.
989	Primary *bool `json:"primary,omitempty"`
990
991	// The private IP address of the IP configuration.
992	PrivateIPAddress *string `json:"privateIPAddress,omitempty"`
993
994	// The private IP address allocation method.
995	PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"`
996
997	// Reference to the subnet resource.
998	Subnet *SubResource `json:"subnet,omitempty"`
999
1000	// READ-ONLY; The provisioning state of the application gateway private link IP configuration.
1001	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
1002}
1003
1004// ApplicationGatewayPrivateLinkResource - PrivateLink Resource of an application gateway.
1005type ApplicationGatewayPrivateLinkResource struct {
1006	SubResource
1007	// Name of the private link resource that is unique within an Application Gateway.
1008	Name *string `json:"name,omitempty"`
1009
1010	// Properties of the application gateway private link resource.
1011	Properties *ApplicationGatewayPrivateLinkResourceProperties `json:"properties,omitempty"`
1012
1013	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
1014	Etag *string `json:"etag,omitempty" azure:"ro"`
1015
1016	// READ-ONLY; Type of the resource.
1017	Type *string `json:"type,omitempty" azure:"ro"`
1018}
1019
1020// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateLinkResource.
1021func (a ApplicationGatewayPrivateLinkResource) MarshalJSON() ([]byte, error) {
1022	objectMap := a.SubResource.marshalInternal()
1023	populate(objectMap, "etag", a.Etag)
1024	populate(objectMap, "name", a.Name)
1025	populate(objectMap, "properties", a.Properties)
1026	populate(objectMap, "type", a.Type)
1027	return json.Marshal(objectMap)
1028}
1029
1030// ApplicationGatewayPrivateLinkResourceListResult - Response for ListApplicationGatewayPrivateLinkResources API service call. Gets all private link resources
1031// for an application gateway.
1032type ApplicationGatewayPrivateLinkResourceListResult struct {
1033	// URL to get the next set of results.
1034	NextLink *string `json:"nextLink,omitempty"`
1035
1036	// List of private link resources of an application gateway.
1037	Value []*ApplicationGatewayPrivateLinkResource `json:"value,omitempty"`
1038}
1039
1040// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateLinkResourceListResult.
1041func (a ApplicationGatewayPrivateLinkResourceListResult) MarshalJSON() ([]byte, error) {
1042	objectMap := make(map[string]interface{})
1043	populate(objectMap, "nextLink", a.NextLink)
1044	populate(objectMap, "value", a.Value)
1045	return json.Marshal(objectMap)
1046}
1047
1048// ApplicationGatewayPrivateLinkResourceProperties - Properties of a private link resource.
1049type ApplicationGatewayPrivateLinkResourceProperties struct {
1050	// Required DNS zone names of the the private link resource.
1051	RequiredZoneNames []*string `json:"requiredZoneNames,omitempty"`
1052
1053	// READ-ONLY; Group identifier of private link resource.
1054	GroupID *string `json:"groupId,omitempty" azure:"ro"`
1055
1056	// READ-ONLY; Required member names of private link resource.
1057	RequiredMembers []*string `json:"requiredMembers,omitempty" azure:"ro"`
1058}
1059
1060// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPrivateLinkResourceProperties.
1061func (a ApplicationGatewayPrivateLinkResourceProperties) MarshalJSON() ([]byte, error) {
1062	objectMap := make(map[string]interface{})
1063	populate(objectMap, "groupId", a.GroupID)
1064	populate(objectMap, "requiredMembers", a.RequiredMembers)
1065	populate(objectMap, "requiredZoneNames", a.RequiredZoneNames)
1066	return json.Marshal(objectMap)
1067}
1068
1069// ApplicationGatewayPrivateLinkResourcesListOptions contains the optional parameters for the ApplicationGatewayPrivateLinkResources.List method.
1070type ApplicationGatewayPrivateLinkResourcesListOptions struct {
1071	// placeholder for future optional parameters
1072}
1073
1074// ApplicationGatewayProbe - Probe of the application gateway.
1075type ApplicationGatewayProbe struct {
1076	SubResource
1077	// Name of the probe that is unique within an Application Gateway.
1078	Name *string `json:"name,omitempty"`
1079
1080	// Properties of the application gateway probe.
1081	Properties *ApplicationGatewayProbePropertiesFormat `json:"properties,omitempty"`
1082
1083	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
1084	Etag *string `json:"etag,omitempty" azure:"ro"`
1085
1086	// READ-ONLY; Type of the resource.
1087	Type *string `json:"type,omitempty" azure:"ro"`
1088}
1089
1090// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayProbe.
1091func (a ApplicationGatewayProbe) MarshalJSON() ([]byte, error) {
1092	objectMap := a.SubResource.marshalInternal()
1093	populate(objectMap, "etag", a.Etag)
1094	populate(objectMap, "name", a.Name)
1095	populate(objectMap, "properties", a.Properties)
1096	populate(objectMap, "type", a.Type)
1097	return json.Marshal(objectMap)
1098}
1099
1100// ApplicationGatewayProbeHealthResponseMatch - Application gateway probe health response match.
1101type ApplicationGatewayProbeHealthResponseMatch struct {
1102	// Body that must be contained in the health response. Default value is empty.
1103	Body *string `json:"body,omitempty"`
1104
1105	// Allowed ranges of healthy status codes. Default range of healthy status codes is 200-399.
1106	StatusCodes []*string `json:"statusCodes,omitempty"`
1107}
1108
1109// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayProbeHealthResponseMatch.
1110func (a ApplicationGatewayProbeHealthResponseMatch) MarshalJSON() ([]byte, error) {
1111	objectMap := make(map[string]interface{})
1112	populate(objectMap, "body", a.Body)
1113	populate(objectMap, "statusCodes", a.StatusCodes)
1114	return json.Marshal(objectMap)
1115}
1116
1117// ApplicationGatewayProbePropertiesFormat - Properties of probe of an application gateway.
1118type ApplicationGatewayProbePropertiesFormat struct {
1119	// Host name to send the probe to.
1120	Host *string `json:"host,omitempty"`
1121
1122	// The probing interval in seconds. This is the time interval between two consecutive probes. Acceptable values are from 1 second to 86400 seconds.
1123	Interval *int32 `json:"interval,omitempty"`
1124
1125	// Criterion for classifying a healthy probe response.
1126	Match *ApplicationGatewayProbeHealthResponseMatch `json:"match,omitempty"`
1127
1128	// Minimum number of servers that are always marked healthy. Default value is 0.
1129	MinServers *int32 `json:"minServers,omitempty"`
1130
1131	// Relative path of probe. Valid path starts from '/'. Probe is sent to ://:.
1132	Path *string `json:"path,omitempty"`
1133
1134	// Whether the host header should be picked from the backend http settings. Default value is false.
1135	PickHostNameFromBackendHTTPSettings *bool `json:"pickHostNameFromBackendHttpSettings,omitempty"`
1136
1137	// Custom port which will be used for probing the backend servers. The valid value ranges from 1 to 65535. In case not set, port from http settings will
1138	// be used. This property is valid for Standardv2 and
1139	// WAFv2 only.
1140	Port *int32 `json:"port,omitempty"`
1141
1142	// The protocol used for the probe.
1143	Protocol *ApplicationGatewayProtocol `json:"protocol,omitempty"`
1144
1145	// The probe timeout in seconds. Probe marked as failed if valid response is not received with this timeout period. Acceptable values are from 1 second
1146	// to 86400 seconds.
1147	Timeout *int32 `json:"timeout,omitempty"`
1148
1149	// The probe retry count. Backend server is marked down after consecutive probe failure count reaches UnhealthyThreshold. Acceptable values are from 1 second
1150	// to 20.
1151	UnhealthyThreshold *int32 `json:"unhealthyThreshold,omitempty"`
1152
1153	// READ-ONLY; The provisioning state of the probe resource.
1154	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
1155}
1156
1157// ApplicationGatewayPropertiesFormat - Properties of the application gateway.
1158type ApplicationGatewayPropertiesFormat struct {
1159	// Authentication certificates of the application gateway resource. For default limits, see Application Gateway limits
1160	// [https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits].
1161	AuthenticationCertificates []*ApplicationGatewayAuthenticationCertificate `json:"authenticationCertificates,omitempty"`
1162
1163	// Autoscale Configuration.
1164	AutoscaleConfiguration *ApplicationGatewayAutoscaleConfiguration `json:"autoscaleConfiguration,omitempty"`
1165
1166	// Backend address pool of the application gateway resource. For default limits, see Application Gateway limits
1167	// [https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits].
1168	BackendAddressPools []*ApplicationGatewayBackendAddressPool `json:"backendAddressPools,omitempty"`
1169
1170	// Backend http settings of the application gateway resource. For default limits, see Application Gateway limits
1171	// [https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits].
1172	BackendHTTPSettingsCollection []*ApplicationGatewayBackendHTTPSettings `json:"backendHttpSettingsCollection,omitempty"`
1173
1174	// Custom error configurations of the application gateway resource.
1175	CustomErrorConfigurations []*ApplicationGatewayCustomError `json:"customErrorConfigurations,omitempty"`
1176
1177	// Whether FIPS is enabled on the application gateway resource.
1178	EnableFips *bool `json:"enableFips,omitempty"`
1179
1180	// Whether HTTP2 is enabled on the application gateway resource.
1181	EnableHTTP2 *bool `json:"enableHttp2,omitempty"`
1182
1183	// Reference to the FirewallPolicy resource.
1184	FirewallPolicy *SubResource `json:"firewallPolicy,omitempty"`
1185
1186	// If true, associates a firewall policy with an application gateway regardless whether the policy differs from the WAF Config.
1187	ForceFirewallPolicyAssociation *bool `json:"forceFirewallPolicyAssociation,omitempty"`
1188
1189	// Frontend IP addresses of the application gateway resource. For default limits, see Application Gateway limits
1190	// [https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits].
1191	FrontendIPConfigurations []*ApplicationGatewayFrontendIPConfiguration `json:"frontendIPConfigurations,omitempty"`
1192
1193	// Frontend ports of the application gateway resource. For default limits, see Application Gateway limits [https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits].
1194	FrontendPorts []*ApplicationGatewayFrontendPort `json:"frontendPorts,omitempty"`
1195
1196	// Subnets of the application gateway resource. For default limits, see Application Gateway limits [https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits].
1197	GatewayIPConfigurations []*ApplicationGatewayIPConfiguration `json:"gatewayIPConfigurations,omitempty"`
1198
1199	// Http listeners of the application gateway resource. For default limits, see Application Gateway limits [https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits].
1200	HTTPListeners []*ApplicationGatewayHTTPListener `json:"httpListeners,omitempty"`
1201
1202	// PrivateLink configurations on application gateway.
1203	PrivateLinkConfigurations []*ApplicationGatewayPrivateLinkConfiguration `json:"privateLinkConfigurations,omitempty"`
1204
1205	// Probes of the application gateway resource.
1206	Probes []*ApplicationGatewayProbe `json:"probes,omitempty"`
1207
1208	// Redirect configurations of the application gateway resource. For default limits, see Application Gateway limits
1209	// [https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits].
1210	RedirectConfigurations []*ApplicationGatewayRedirectConfiguration `json:"redirectConfigurations,omitempty"`
1211
1212	// Request routing rules of the application gateway resource.
1213	RequestRoutingRules []*ApplicationGatewayRequestRoutingRule `json:"requestRoutingRules,omitempty"`
1214
1215	// Rewrite rules for the application gateway resource.
1216	RewriteRuleSets []*ApplicationGatewayRewriteRuleSet `json:"rewriteRuleSets,omitempty"`
1217
1218	// SKU of the application gateway resource.
1219	SKU *ApplicationGatewaySKU `json:"sku,omitempty"`
1220
1221	// SSL certificates of the application gateway resource. For default limits, see Application Gateway limits [https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits]
1222	// .
1223	SSLCertificates []*ApplicationGatewaySSLCertificate `json:"sslCertificates,omitempty"`
1224
1225	// SSL policy of the application gateway resource.
1226	SSLPolicy *ApplicationGatewaySSLPolicy `json:"sslPolicy,omitempty"`
1227
1228	// SSL profiles of the application gateway resource. For default limits, see Application Gateway limits [https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits].
1229	SSLProfiles []*ApplicationGatewaySSLProfile `json:"sslProfiles,omitempty"`
1230
1231	// Trusted client certificates of the application gateway resource. For default limits, see Application Gateway limits
1232	// [https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits].
1233	TrustedClientCertificates []*ApplicationGatewayTrustedClientCertificate `json:"trustedClientCertificates,omitempty"`
1234
1235	// Trusted Root certificates of the application gateway resource. For default limits, see Application Gateway limits
1236	// [https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits].
1237	TrustedRootCertificates []*ApplicationGatewayTrustedRootCertificate `json:"trustedRootCertificates,omitempty"`
1238
1239	// URL path map of the application gateway resource. For default limits, see Application Gateway limits [https://docs.microsoft.com/azure/azure-subscription-service-limits#application-gateway-limits].
1240	URLPathMaps []*ApplicationGatewayURLPathMap `json:"urlPathMaps,omitempty"`
1241
1242	// Web application firewall configuration.
1243	WebApplicationFirewallConfiguration *ApplicationGatewayWebApplicationFirewallConfiguration `json:"webApplicationFirewallConfiguration,omitempty"`
1244
1245	// READ-ONLY; Operational state of the application gateway resource.
1246	OperationalState *ApplicationGatewayOperationalState `json:"operationalState,omitempty" azure:"ro"`
1247
1248	// READ-ONLY; Private Endpoint connections on application gateway.
1249	PrivateEndpointConnections []*ApplicationGatewayPrivateEndpointConnection `json:"privateEndpointConnections,omitempty" azure:"ro"`
1250
1251	// READ-ONLY; The provisioning state of the application gateway resource.
1252	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
1253
1254	// READ-ONLY; The resource GUID property of the application gateway resource.
1255	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
1256}
1257
1258// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayPropertiesFormat.
1259func (a ApplicationGatewayPropertiesFormat) MarshalJSON() ([]byte, error) {
1260	objectMap := make(map[string]interface{})
1261	populate(objectMap, "authenticationCertificates", a.AuthenticationCertificates)
1262	populate(objectMap, "autoscaleConfiguration", a.AutoscaleConfiguration)
1263	populate(objectMap, "backendAddressPools", a.BackendAddressPools)
1264	populate(objectMap, "backendHttpSettingsCollection", a.BackendHTTPSettingsCollection)
1265	populate(objectMap, "customErrorConfigurations", a.CustomErrorConfigurations)
1266	populate(objectMap, "enableFips", a.EnableFips)
1267	populate(objectMap, "enableHttp2", a.EnableHTTP2)
1268	populate(objectMap, "firewallPolicy", a.FirewallPolicy)
1269	populate(objectMap, "forceFirewallPolicyAssociation", a.ForceFirewallPolicyAssociation)
1270	populate(objectMap, "frontendIPConfigurations", a.FrontendIPConfigurations)
1271	populate(objectMap, "frontendPorts", a.FrontendPorts)
1272	populate(objectMap, "gatewayIPConfigurations", a.GatewayIPConfigurations)
1273	populate(objectMap, "httpListeners", a.HTTPListeners)
1274	populate(objectMap, "operationalState", a.OperationalState)
1275	populate(objectMap, "privateEndpointConnections", a.PrivateEndpointConnections)
1276	populate(objectMap, "privateLinkConfigurations", a.PrivateLinkConfigurations)
1277	populate(objectMap, "probes", a.Probes)
1278	populate(objectMap, "provisioningState", a.ProvisioningState)
1279	populate(objectMap, "redirectConfigurations", a.RedirectConfigurations)
1280	populate(objectMap, "requestRoutingRules", a.RequestRoutingRules)
1281	populate(objectMap, "resourceGuid", a.ResourceGUID)
1282	populate(objectMap, "rewriteRuleSets", a.RewriteRuleSets)
1283	populate(objectMap, "sku", a.SKU)
1284	populate(objectMap, "sslCertificates", a.SSLCertificates)
1285	populate(objectMap, "sslPolicy", a.SSLPolicy)
1286	populate(objectMap, "sslProfiles", a.SSLProfiles)
1287	populate(objectMap, "trustedClientCertificates", a.TrustedClientCertificates)
1288	populate(objectMap, "trustedRootCertificates", a.TrustedRootCertificates)
1289	populate(objectMap, "urlPathMaps", a.URLPathMaps)
1290	populate(objectMap, "webApplicationFirewallConfiguration", a.WebApplicationFirewallConfiguration)
1291	return json.Marshal(objectMap)
1292}
1293
1294// ApplicationGatewayRedirectConfiguration - Redirect configuration of an application gateway.
1295type ApplicationGatewayRedirectConfiguration struct {
1296	SubResource
1297	// Name of the redirect configuration that is unique within an Application Gateway.
1298	Name *string `json:"name,omitempty"`
1299
1300	// Properties of the application gateway redirect configuration.
1301	Properties *ApplicationGatewayRedirectConfigurationPropertiesFormat `json:"properties,omitempty"`
1302
1303	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
1304	Etag *string `json:"etag,omitempty" azure:"ro"`
1305
1306	// READ-ONLY; Type of the resource.
1307	Type *string `json:"type,omitempty" azure:"ro"`
1308}
1309
1310// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRedirectConfiguration.
1311func (a ApplicationGatewayRedirectConfiguration) MarshalJSON() ([]byte, error) {
1312	objectMap := a.SubResource.marshalInternal()
1313	populate(objectMap, "etag", a.Etag)
1314	populate(objectMap, "name", a.Name)
1315	populate(objectMap, "properties", a.Properties)
1316	populate(objectMap, "type", a.Type)
1317	return json.Marshal(objectMap)
1318}
1319
1320// ApplicationGatewayRedirectConfigurationPropertiesFormat - Properties of redirect configuration of the application gateway.
1321type ApplicationGatewayRedirectConfigurationPropertiesFormat struct {
1322	// Include path in the redirected url.
1323	IncludePath *bool `json:"includePath,omitempty"`
1324
1325	// Include query string in the redirected url.
1326	IncludeQueryString *bool `json:"includeQueryString,omitempty"`
1327
1328	// Path rules specifying redirect configuration.
1329	PathRules []*SubResource `json:"pathRules,omitempty"`
1330
1331	// HTTP redirection type.
1332	RedirectType *ApplicationGatewayRedirectType `json:"redirectType,omitempty"`
1333
1334	// Request routing specifying redirect configuration.
1335	RequestRoutingRules []*SubResource `json:"requestRoutingRules,omitempty"`
1336
1337	// Reference to a listener to redirect the request to.
1338	TargetListener *SubResource `json:"targetListener,omitempty"`
1339
1340	// Url to redirect the request to.
1341	TargetURL *string `json:"targetUrl,omitempty"`
1342
1343	// Url path maps specifying default redirect configuration.
1344	URLPathMaps []*SubResource `json:"urlPathMaps,omitempty"`
1345}
1346
1347// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRedirectConfigurationPropertiesFormat.
1348func (a ApplicationGatewayRedirectConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
1349	objectMap := make(map[string]interface{})
1350	populate(objectMap, "includePath", a.IncludePath)
1351	populate(objectMap, "includeQueryString", a.IncludeQueryString)
1352	populate(objectMap, "pathRules", a.PathRules)
1353	populate(objectMap, "redirectType", a.RedirectType)
1354	populate(objectMap, "requestRoutingRules", a.RequestRoutingRules)
1355	populate(objectMap, "targetListener", a.TargetListener)
1356	populate(objectMap, "targetUrl", a.TargetURL)
1357	populate(objectMap, "urlPathMaps", a.URLPathMaps)
1358	return json.Marshal(objectMap)
1359}
1360
1361// ApplicationGatewayRequestRoutingRule - Request routing rule of an application gateway.
1362type ApplicationGatewayRequestRoutingRule struct {
1363	SubResource
1364	// Name of the request routing rule that is unique within an Application Gateway.
1365	Name *string `json:"name,omitempty"`
1366
1367	// Properties of the application gateway request routing rule.
1368	Properties *ApplicationGatewayRequestRoutingRulePropertiesFormat `json:"properties,omitempty"`
1369
1370	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
1371	Etag *string `json:"etag,omitempty" azure:"ro"`
1372
1373	// READ-ONLY; Type of the resource.
1374	Type *string `json:"type,omitempty" azure:"ro"`
1375}
1376
1377// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRequestRoutingRule.
1378func (a ApplicationGatewayRequestRoutingRule) MarshalJSON() ([]byte, error) {
1379	objectMap := a.SubResource.marshalInternal()
1380	populate(objectMap, "etag", a.Etag)
1381	populate(objectMap, "name", a.Name)
1382	populate(objectMap, "properties", a.Properties)
1383	populate(objectMap, "type", a.Type)
1384	return json.Marshal(objectMap)
1385}
1386
1387// ApplicationGatewayRequestRoutingRulePropertiesFormat - Properties of request routing rule of the application gateway.
1388type ApplicationGatewayRequestRoutingRulePropertiesFormat struct {
1389	// Backend address pool resource of the application gateway.
1390	BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"`
1391
1392	// Backend http settings resource of the application gateway.
1393	BackendHTTPSettings *SubResource `json:"backendHttpSettings,omitempty"`
1394
1395	// Http listener resource of the application gateway.
1396	HTTPListener *SubResource `json:"httpListener,omitempty"`
1397
1398	// Priority of the request routing rule.
1399	Priority *int32 `json:"priority,omitempty"`
1400
1401	// Redirect configuration resource of the application gateway.
1402	RedirectConfiguration *SubResource `json:"redirectConfiguration,omitempty"`
1403
1404	// Rewrite Rule Set resource in Basic rule of the application gateway.
1405	RewriteRuleSet *SubResource `json:"rewriteRuleSet,omitempty"`
1406
1407	// Rule type.
1408	RuleType *ApplicationGatewayRequestRoutingRuleType `json:"ruleType,omitempty"`
1409
1410	// URL path map resource of the application gateway.
1411	URLPathMap *SubResource `json:"urlPathMap,omitempty"`
1412
1413	// READ-ONLY; The provisioning state of the request routing rule resource.
1414	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
1415}
1416
1417// ApplicationGatewayRewriteRule - Rewrite rule of an application gateway.
1418type ApplicationGatewayRewriteRule struct {
1419	// Set of actions to be done as part of the rewrite Rule.
1420	ActionSet *ApplicationGatewayRewriteRuleActionSet `json:"actionSet,omitempty"`
1421
1422	// Conditions based on which the action set execution will be evaluated.
1423	Conditions []*ApplicationGatewayRewriteRuleCondition `json:"conditions,omitempty"`
1424
1425	// Name of the rewrite rule that is unique within an Application Gateway.
1426	Name *string `json:"name,omitempty"`
1427
1428	// Rule Sequence of the rewrite rule that determines the order of execution of a particular rule in a RewriteRuleSet.
1429	RuleSequence *int32 `json:"ruleSequence,omitempty"`
1430}
1431
1432// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRewriteRule.
1433func (a ApplicationGatewayRewriteRule) MarshalJSON() ([]byte, error) {
1434	objectMap := make(map[string]interface{})
1435	populate(objectMap, "actionSet", a.ActionSet)
1436	populate(objectMap, "conditions", a.Conditions)
1437	populate(objectMap, "name", a.Name)
1438	populate(objectMap, "ruleSequence", a.RuleSequence)
1439	return json.Marshal(objectMap)
1440}
1441
1442// ApplicationGatewayRewriteRuleActionSet - Set of actions in the Rewrite Rule in Application Gateway.
1443type ApplicationGatewayRewriteRuleActionSet struct {
1444	// Request Header Actions in the Action Set.
1445	RequestHeaderConfigurations []*ApplicationGatewayHeaderConfiguration `json:"requestHeaderConfigurations,omitempty"`
1446
1447	// Response Header Actions in the Action Set.
1448	ResponseHeaderConfigurations []*ApplicationGatewayHeaderConfiguration `json:"responseHeaderConfigurations,omitempty"`
1449
1450	// Url Configuration Action in the Action Set.
1451	URLConfiguration *ApplicationGatewayURLConfiguration `json:"urlConfiguration,omitempty"`
1452}
1453
1454// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRewriteRuleActionSet.
1455func (a ApplicationGatewayRewriteRuleActionSet) MarshalJSON() ([]byte, error) {
1456	objectMap := make(map[string]interface{})
1457	populate(objectMap, "requestHeaderConfigurations", a.RequestHeaderConfigurations)
1458	populate(objectMap, "responseHeaderConfigurations", a.ResponseHeaderConfigurations)
1459	populate(objectMap, "urlConfiguration", a.URLConfiguration)
1460	return json.Marshal(objectMap)
1461}
1462
1463// ApplicationGatewayRewriteRuleCondition - Set of conditions in the Rewrite Rule in Application Gateway.
1464type ApplicationGatewayRewriteRuleCondition struct {
1465	// Setting this parameter to truth value with force the pattern to do a case in-sensitive comparison.
1466	IgnoreCase *bool `json:"ignoreCase,omitempty"`
1467
1468	// Setting this value as truth will force to check the negation of the condition given by the user.
1469	Negate *bool `json:"negate,omitempty"`
1470
1471	// The pattern, either fixed string or regular expression, that evaluates the truthfulness of the condition.
1472	Pattern *string `json:"pattern,omitempty"`
1473
1474	// The condition parameter of the RewriteRuleCondition.
1475	Variable *string `json:"variable,omitempty"`
1476}
1477
1478// ApplicationGatewayRewriteRuleSet - Rewrite rule set of an application gateway.
1479type ApplicationGatewayRewriteRuleSet struct {
1480	SubResource
1481	// Name of the rewrite rule set that is unique within an Application Gateway.
1482	Name *string `json:"name,omitempty"`
1483
1484	// Properties of the application gateway rewrite rule set.
1485	Properties *ApplicationGatewayRewriteRuleSetPropertiesFormat `json:"properties,omitempty"`
1486
1487	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
1488	Etag *string `json:"etag,omitempty" azure:"ro"`
1489}
1490
1491// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRewriteRuleSet.
1492func (a ApplicationGatewayRewriteRuleSet) MarshalJSON() ([]byte, error) {
1493	objectMap := a.SubResource.marshalInternal()
1494	populate(objectMap, "etag", a.Etag)
1495	populate(objectMap, "name", a.Name)
1496	populate(objectMap, "properties", a.Properties)
1497	return json.Marshal(objectMap)
1498}
1499
1500// ApplicationGatewayRewriteRuleSetPropertiesFormat - Properties of rewrite rule set of the application gateway.
1501type ApplicationGatewayRewriteRuleSetPropertiesFormat struct {
1502	// Rewrite rules in the rewrite rule set.
1503	RewriteRules []*ApplicationGatewayRewriteRule `json:"rewriteRules,omitempty"`
1504
1505	// READ-ONLY; The provisioning state of the rewrite rule set resource.
1506	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
1507}
1508
1509// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayRewriteRuleSetPropertiesFormat.
1510func (a ApplicationGatewayRewriteRuleSetPropertiesFormat) MarshalJSON() ([]byte, error) {
1511	objectMap := make(map[string]interface{})
1512	populate(objectMap, "provisioningState", a.ProvisioningState)
1513	populate(objectMap, "rewriteRules", a.RewriteRules)
1514	return json.Marshal(objectMap)
1515}
1516
1517// ApplicationGatewaySKU - SKU of an application gateway.
1518type ApplicationGatewaySKU struct {
1519	// Capacity (instance count) of an application gateway.
1520	Capacity *int32 `json:"capacity,omitempty"`
1521
1522	// Name of an application gateway SKU.
1523	Name *ApplicationGatewaySKUName `json:"name,omitempty"`
1524
1525	// Tier of an application gateway.
1526	Tier *ApplicationGatewayTier `json:"tier,omitempty"`
1527}
1528
1529// ApplicationGatewaySSLCertificate - SSL certificates of an application gateway.
1530type ApplicationGatewaySSLCertificate struct {
1531	SubResource
1532	// Name of the SSL certificate that is unique within an Application Gateway.
1533	Name *string `json:"name,omitempty"`
1534
1535	// Properties of the application gateway SSL certificate.
1536	Properties *ApplicationGatewaySSLCertificatePropertiesFormat `json:"properties,omitempty"`
1537
1538	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
1539	Etag *string `json:"etag,omitempty" azure:"ro"`
1540
1541	// READ-ONLY; Type of the resource.
1542	Type *string `json:"type,omitempty" azure:"ro"`
1543}
1544
1545// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewaySSLCertificate.
1546func (a ApplicationGatewaySSLCertificate) MarshalJSON() ([]byte, error) {
1547	objectMap := a.SubResource.marshalInternal()
1548	populate(objectMap, "etag", a.Etag)
1549	populate(objectMap, "name", a.Name)
1550	populate(objectMap, "properties", a.Properties)
1551	populate(objectMap, "type", a.Type)
1552	return json.Marshal(objectMap)
1553}
1554
1555// ApplicationGatewaySSLCertificatePropertiesFormat - Properties of SSL certificates of an application gateway.
1556type ApplicationGatewaySSLCertificatePropertiesFormat struct {
1557	// Base-64 encoded pfx certificate. Only applicable in PUT Request.
1558	Data *string `json:"data,omitempty"`
1559
1560	// Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or 'Certificate' object stored in KeyVault.
1561	KeyVaultSecretID *string `json:"keyVaultSecretId,omitempty"`
1562
1563	// Password for the pfx file specified in data. Only applicable in PUT request.
1564	Password *string `json:"password,omitempty"`
1565
1566	// READ-ONLY; The provisioning state of the SSL certificate resource.
1567	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
1568
1569	// READ-ONLY; Base-64 encoded Public cert data corresponding to pfx specified in data. Only applicable in GET request.
1570	PublicCertData *string `json:"publicCertData,omitempty" azure:"ro"`
1571}
1572
1573// ApplicationGatewaySSLPolicy - Application Gateway Ssl policy.
1574type ApplicationGatewaySSLPolicy struct {
1575	// Ssl cipher suites to be enabled in the specified order to application gateway.
1576	CipherSuites []*ApplicationGatewaySSLCipherSuite `json:"cipherSuites,omitempty"`
1577
1578	// Ssl protocols to be disabled on application gateway.
1579	DisabledSSLProtocols []*ApplicationGatewaySSLProtocol `json:"disabledSslProtocols,omitempty"`
1580
1581	// Minimum version of Ssl protocol to be supported on application gateway.
1582	MinProtocolVersion *ApplicationGatewaySSLProtocol `json:"minProtocolVersion,omitempty"`
1583
1584	// Name of Ssl predefined policy.
1585	PolicyName *ApplicationGatewaySSLPolicyName `json:"policyName,omitempty"`
1586
1587	// Type of Ssl Policy.
1588	PolicyType *ApplicationGatewaySSLPolicyType `json:"policyType,omitempty"`
1589}
1590
1591// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewaySSLPolicy.
1592func (a ApplicationGatewaySSLPolicy) MarshalJSON() ([]byte, error) {
1593	objectMap := make(map[string]interface{})
1594	populate(objectMap, "cipherSuites", a.CipherSuites)
1595	populate(objectMap, "disabledSslProtocols", a.DisabledSSLProtocols)
1596	populate(objectMap, "minProtocolVersion", a.MinProtocolVersion)
1597	populate(objectMap, "policyName", a.PolicyName)
1598	populate(objectMap, "policyType", a.PolicyType)
1599	return json.Marshal(objectMap)
1600}
1601
1602// ApplicationGatewaySSLPredefinedPolicy - An Ssl predefined policy.
1603type ApplicationGatewaySSLPredefinedPolicy struct {
1604	SubResource
1605	// Name of the Ssl predefined policy.
1606	Name *string `json:"name,omitempty"`
1607
1608	// Properties of the application gateway SSL predefined policy.
1609	Properties *ApplicationGatewaySSLPredefinedPolicyPropertiesFormat `json:"properties,omitempty"`
1610}
1611
1612// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewaySSLPredefinedPolicy.
1613func (a ApplicationGatewaySSLPredefinedPolicy) MarshalJSON() ([]byte, error) {
1614	objectMap := a.SubResource.marshalInternal()
1615	populate(objectMap, "name", a.Name)
1616	populate(objectMap, "properties", a.Properties)
1617	return json.Marshal(objectMap)
1618}
1619
1620// ApplicationGatewaySSLPredefinedPolicyPropertiesFormat - Properties of ApplicationGatewaySslPredefinedPolicy.
1621type ApplicationGatewaySSLPredefinedPolicyPropertiesFormat struct {
1622	// Ssl cipher suites to be enabled in the specified order for application gateway.
1623	CipherSuites []*ApplicationGatewaySSLCipherSuite `json:"cipherSuites,omitempty"`
1624
1625	// Minimum version of Ssl protocol to be supported on application gateway.
1626	MinProtocolVersion *ApplicationGatewaySSLProtocol `json:"minProtocolVersion,omitempty"`
1627}
1628
1629// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewaySSLPredefinedPolicyPropertiesFormat.
1630func (a ApplicationGatewaySSLPredefinedPolicyPropertiesFormat) MarshalJSON() ([]byte, error) {
1631	objectMap := make(map[string]interface{})
1632	populate(objectMap, "cipherSuites", a.CipherSuites)
1633	populate(objectMap, "minProtocolVersion", a.MinProtocolVersion)
1634	return json.Marshal(objectMap)
1635}
1636
1637// ApplicationGatewaySSLProfile - SSL profile of an application gateway.
1638type ApplicationGatewaySSLProfile struct {
1639	SubResource
1640	// Name of the SSL profile that is unique within an Application Gateway.
1641	Name *string `json:"name,omitempty"`
1642
1643	// Properties of the application gateway SSL profile.
1644	Properties *ApplicationGatewaySSLProfilePropertiesFormat `json:"properties,omitempty"`
1645
1646	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
1647	Etag *string `json:"etag,omitempty" azure:"ro"`
1648
1649	// READ-ONLY; Type of the resource.
1650	Type *string `json:"type,omitempty" azure:"ro"`
1651}
1652
1653// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewaySSLProfile.
1654func (a ApplicationGatewaySSLProfile) MarshalJSON() ([]byte, error) {
1655	objectMap := a.SubResource.marshalInternal()
1656	populate(objectMap, "etag", a.Etag)
1657	populate(objectMap, "name", a.Name)
1658	populate(objectMap, "properties", a.Properties)
1659	populate(objectMap, "type", a.Type)
1660	return json.Marshal(objectMap)
1661}
1662
1663// ApplicationGatewaySSLProfilePropertiesFormat - Properties of SSL profile of an application gateway.
1664type ApplicationGatewaySSLProfilePropertiesFormat struct {
1665	// Client authentication configuration of the application gateway resource.
1666	ClientAuthConfiguration *ApplicationGatewayClientAuthConfiguration `json:"clientAuthConfiguration,omitempty"`
1667
1668	// SSL policy of the application gateway resource.
1669	SSLPolicy *ApplicationGatewaySSLPolicy `json:"sslPolicy,omitempty"`
1670
1671	// Array of references to application gateway trusted client certificates.
1672	TrustedClientCertificates []*SubResource `json:"trustedClientCertificates,omitempty"`
1673
1674	// READ-ONLY; The provisioning state of the HTTP listener resource.
1675	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
1676}
1677
1678// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewaySSLProfilePropertiesFormat.
1679func (a ApplicationGatewaySSLProfilePropertiesFormat) MarshalJSON() ([]byte, error) {
1680	objectMap := make(map[string]interface{})
1681	populate(objectMap, "clientAuthConfiguration", a.ClientAuthConfiguration)
1682	populate(objectMap, "provisioningState", a.ProvisioningState)
1683	populate(objectMap, "sslPolicy", a.SSLPolicy)
1684	populate(objectMap, "trustedClientCertificates", a.TrustedClientCertificates)
1685	return json.Marshal(objectMap)
1686}
1687
1688// ApplicationGatewayTrustedClientCertificate - Trusted client certificates of an application gateway.
1689type ApplicationGatewayTrustedClientCertificate struct {
1690	SubResource
1691	// Name of the trusted client certificate that is unique within an Application Gateway.
1692	Name *string `json:"name,omitempty"`
1693
1694	// Properties of the application gateway trusted client certificate.
1695	Properties *ApplicationGatewayTrustedClientCertificatePropertiesFormat `json:"properties,omitempty"`
1696
1697	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
1698	Etag *string `json:"etag,omitempty" azure:"ro"`
1699
1700	// READ-ONLY; Type of the resource.
1701	Type *string `json:"type,omitempty" azure:"ro"`
1702}
1703
1704// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayTrustedClientCertificate.
1705func (a ApplicationGatewayTrustedClientCertificate) MarshalJSON() ([]byte, error) {
1706	objectMap := a.SubResource.marshalInternal()
1707	populate(objectMap, "etag", a.Etag)
1708	populate(objectMap, "name", a.Name)
1709	populate(objectMap, "properties", a.Properties)
1710	populate(objectMap, "type", a.Type)
1711	return json.Marshal(objectMap)
1712}
1713
1714// ApplicationGatewayTrustedClientCertificatePropertiesFormat - Trusted client certificates properties of an application gateway.
1715type ApplicationGatewayTrustedClientCertificatePropertiesFormat struct {
1716	// Certificate public data.
1717	Data *string `json:"data,omitempty"`
1718
1719	// READ-ONLY; Distinguished name of client certificate issuer.
1720	ClientCertIssuerDN *string `json:"clientCertIssuerDN,omitempty" azure:"ro"`
1721
1722	// READ-ONLY; The provisioning state of the trusted client certificate resource.
1723	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
1724
1725	// READ-ONLY; Validated certificate data.
1726	ValidatedCertData *string `json:"validatedCertData,omitempty" azure:"ro"`
1727}
1728
1729// ApplicationGatewayTrustedRootCertificate - Trusted Root certificates of an application gateway.
1730type ApplicationGatewayTrustedRootCertificate struct {
1731	SubResource
1732	// Name of the trusted root certificate that is unique within an Application Gateway.
1733	Name *string `json:"name,omitempty"`
1734
1735	// Properties of the application gateway trusted root certificate.
1736	Properties *ApplicationGatewayTrustedRootCertificatePropertiesFormat `json:"properties,omitempty"`
1737
1738	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
1739	Etag *string `json:"etag,omitempty" azure:"ro"`
1740
1741	// READ-ONLY; Type of the resource.
1742	Type *string `json:"type,omitempty" azure:"ro"`
1743}
1744
1745// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayTrustedRootCertificate.
1746func (a ApplicationGatewayTrustedRootCertificate) MarshalJSON() ([]byte, error) {
1747	objectMap := a.SubResource.marshalInternal()
1748	populate(objectMap, "etag", a.Etag)
1749	populate(objectMap, "name", a.Name)
1750	populate(objectMap, "properties", a.Properties)
1751	populate(objectMap, "type", a.Type)
1752	return json.Marshal(objectMap)
1753}
1754
1755// ApplicationGatewayTrustedRootCertificatePropertiesFormat - Trusted Root certificates properties of an application gateway.
1756type ApplicationGatewayTrustedRootCertificatePropertiesFormat struct {
1757	// Certificate public data.
1758	Data *string `json:"data,omitempty"`
1759
1760	// Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or 'Certificate' object stored in KeyVault.
1761	KeyVaultSecretID *string `json:"keyVaultSecretId,omitempty"`
1762
1763	// READ-ONLY; The provisioning state of the trusted root certificate resource.
1764	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
1765}
1766
1767// ApplicationGatewayURLConfiguration - Url configuration of the Actions set in Application Gateway.
1768type ApplicationGatewayURLConfiguration struct {
1769	// Url path which user has provided for url rewrite. Null means no path will be updated. Default value is null.
1770	ModifiedPath *string `json:"modifiedPath,omitempty"`
1771
1772	// Query string which user has provided for url rewrite. Null means no query string will be updated. Default value is null.
1773	ModifiedQueryString *string `json:"modifiedQueryString,omitempty"`
1774
1775	// If set as true, it will re-evaluate the url path map provided in path based request routing rules using modified path. Default value is false.
1776	Reroute *bool `json:"reroute,omitempty"`
1777}
1778
1779// ApplicationGatewayURLPathMap - UrlPathMaps give a url path to the backend mapping information for PathBasedRouting.
1780type ApplicationGatewayURLPathMap struct {
1781	SubResource
1782	// Name of the URL path map that is unique within an Application Gateway.
1783	Name *string `json:"name,omitempty"`
1784
1785	// Properties of the application gateway URL path map.
1786	Properties *ApplicationGatewayURLPathMapPropertiesFormat `json:"properties,omitempty"`
1787
1788	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
1789	Etag *string `json:"etag,omitempty" azure:"ro"`
1790
1791	// READ-ONLY; Type of the resource.
1792	Type *string `json:"type,omitempty" azure:"ro"`
1793}
1794
1795// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayURLPathMap.
1796func (a ApplicationGatewayURLPathMap) MarshalJSON() ([]byte, error) {
1797	objectMap := a.SubResource.marshalInternal()
1798	populate(objectMap, "etag", a.Etag)
1799	populate(objectMap, "name", a.Name)
1800	populate(objectMap, "properties", a.Properties)
1801	populate(objectMap, "type", a.Type)
1802	return json.Marshal(objectMap)
1803}
1804
1805// ApplicationGatewayURLPathMapPropertiesFormat - Properties of UrlPathMap of the application gateway.
1806type ApplicationGatewayURLPathMapPropertiesFormat struct {
1807	// Default backend address pool resource of URL path map.
1808	DefaultBackendAddressPool *SubResource `json:"defaultBackendAddressPool,omitempty"`
1809
1810	// Default backend http settings resource of URL path map.
1811	DefaultBackendHTTPSettings *SubResource `json:"defaultBackendHttpSettings,omitempty"`
1812
1813	// Default redirect configuration resource of URL path map.
1814	DefaultRedirectConfiguration *SubResource `json:"defaultRedirectConfiguration,omitempty"`
1815
1816	// Default Rewrite rule set resource of URL path map.
1817	DefaultRewriteRuleSet *SubResource `json:"defaultRewriteRuleSet,omitempty"`
1818
1819	// Path rule of URL path map resource.
1820	PathRules []*ApplicationGatewayPathRule `json:"pathRules,omitempty"`
1821
1822	// READ-ONLY; The provisioning state of the URL path map resource.
1823	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
1824}
1825
1826// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayURLPathMapPropertiesFormat.
1827func (a ApplicationGatewayURLPathMapPropertiesFormat) MarshalJSON() ([]byte, error) {
1828	objectMap := make(map[string]interface{})
1829	populate(objectMap, "defaultBackendAddressPool", a.DefaultBackendAddressPool)
1830	populate(objectMap, "defaultBackendHttpSettings", a.DefaultBackendHTTPSettings)
1831	populate(objectMap, "defaultRedirectConfiguration", a.DefaultRedirectConfiguration)
1832	populate(objectMap, "defaultRewriteRuleSet", a.DefaultRewriteRuleSet)
1833	populate(objectMap, "pathRules", a.PathRules)
1834	populate(objectMap, "provisioningState", a.ProvisioningState)
1835	return json.Marshal(objectMap)
1836}
1837
1838// ApplicationGatewayWebApplicationFirewallConfiguration - Application gateway web application firewall configuration.
1839type ApplicationGatewayWebApplicationFirewallConfiguration struct {
1840	// REQUIRED; Whether the web application firewall is enabled or not.
1841	Enabled *bool `json:"enabled,omitempty"`
1842
1843	// REQUIRED; Web application firewall mode.
1844	FirewallMode *ApplicationGatewayFirewallMode `json:"firewallMode,omitempty"`
1845
1846	// REQUIRED; The type of the web application firewall rule set. Possible values are: 'OWASP'.
1847	RuleSetType *string `json:"ruleSetType,omitempty"`
1848
1849	// REQUIRED; The version of the rule set type.
1850	RuleSetVersion *string `json:"ruleSetVersion,omitempty"`
1851
1852	// The disabled rule groups.
1853	DisabledRuleGroups []*ApplicationGatewayFirewallDisabledRuleGroup `json:"disabledRuleGroups,omitempty"`
1854
1855	// The exclusion list.
1856	Exclusions []*ApplicationGatewayFirewallExclusion `json:"exclusions,omitempty"`
1857
1858	// Maximum file upload size in Mb for WAF.
1859	FileUploadLimitInMb *int32 `json:"fileUploadLimitInMb,omitempty"`
1860
1861	// Maximum request body size for WAF.
1862	MaxRequestBodySize *int32 `json:"maxRequestBodySize,omitempty"`
1863
1864	// Maximum request body size in Kb for WAF.
1865	MaxRequestBodySizeInKb *int32 `json:"maxRequestBodySizeInKb,omitempty"`
1866
1867	// Whether allow WAF to check request Body.
1868	RequestBodyCheck *bool `json:"requestBodyCheck,omitempty"`
1869}
1870
1871// MarshalJSON implements the json.Marshaller interface for type ApplicationGatewayWebApplicationFirewallConfiguration.
1872func (a ApplicationGatewayWebApplicationFirewallConfiguration) MarshalJSON() ([]byte, error) {
1873	objectMap := make(map[string]interface{})
1874	populate(objectMap, "disabledRuleGroups", a.DisabledRuleGroups)
1875	populate(objectMap, "enabled", a.Enabled)
1876	populate(objectMap, "exclusions", a.Exclusions)
1877	populate(objectMap, "fileUploadLimitInMb", a.FileUploadLimitInMb)
1878	populate(objectMap, "firewallMode", a.FirewallMode)
1879	populate(objectMap, "maxRequestBodySize", a.MaxRequestBodySize)
1880	populate(objectMap, "maxRequestBodySizeInKb", a.MaxRequestBodySizeInKb)
1881	populate(objectMap, "requestBodyCheck", a.RequestBodyCheck)
1882	populate(objectMap, "ruleSetType", a.RuleSetType)
1883	populate(objectMap, "ruleSetVersion", a.RuleSetVersion)
1884	return json.Marshal(objectMap)
1885}
1886
1887// ApplicationGatewaysBeginBackendHealthOnDemandOptions contains the optional parameters for the ApplicationGateways.BeginBackendHealthOnDemand method.
1888type ApplicationGatewaysBeginBackendHealthOnDemandOptions struct {
1889	// Expands BackendAddressPool and BackendHttpSettings referenced in backend health.
1890	Expand *string
1891}
1892
1893// ApplicationGatewaysBeginBackendHealthOptions contains the optional parameters for the ApplicationGateways.BeginBackendHealth method.
1894type ApplicationGatewaysBeginBackendHealthOptions struct {
1895	// Expands BackendAddressPool and BackendHttpSettings referenced in backend health.
1896	Expand *string
1897}
1898
1899// ApplicationGatewaysBeginCreateOrUpdateOptions contains the optional parameters for the ApplicationGateways.BeginCreateOrUpdate method.
1900type ApplicationGatewaysBeginCreateOrUpdateOptions struct {
1901	// placeholder for future optional parameters
1902}
1903
1904// ApplicationGatewaysBeginDeleteOptions contains the optional parameters for the ApplicationGateways.BeginDelete method.
1905type ApplicationGatewaysBeginDeleteOptions struct {
1906	// placeholder for future optional parameters
1907}
1908
1909// ApplicationGatewaysBeginStartOptions contains the optional parameters for the ApplicationGateways.BeginStart method.
1910type ApplicationGatewaysBeginStartOptions struct {
1911	// placeholder for future optional parameters
1912}
1913
1914// ApplicationGatewaysBeginStopOptions contains the optional parameters for the ApplicationGateways.BeginStop method.
1915type ApplicationGatewaysBeginStopOptions struct {
1916	// placeholder for future optional parameters
1917}
1918
1919// ApplicationGatewaysGetOptions contains the optional parameters for the ApplicationGateways.Get method.
1920type ApplicationGatewaysGetOptions struct {
1921	// placeholder for future optional parameters
1922}
1923
1924// ApplicationGatewaysGetSSLPredefinedPolicyOptions contains the optional parameters for the ApplicationGateways.GetSSLPredefinedPolicy method.
1925type ApplicationGatewaysGetSSLPredefinedPolicyOptions struct {
1926	// placeholder for future optional parameters
1927}
1928
1929// ApplicationGatewaysListAllOptions contains the optional parameters for the ApplicationGateways.ListAll method.
1930type ApplicationGatewaysListAllOptions struct {
1931	// placeholder for future optional parameters
1932}
1933
1934// ApplicationGatewaysListAvailableRequestHeadersOptions contains the optional parameters for the ApplicationGateways.ListAvailableRequestHeaders method.
1935type ApplicationGatewaysListAvailableRequestHeadersOptions struct {
1936	// placeholder for future optional parameters
1937}
1938
1939// ApplicationGatewaysListAvailableResponseHeadersOptions contains the optional parameters for the ApplicationGateways.ListAvailableResponseHeaders method.
1940type ApplicationGatewaysListAvailableResponseHeadersOptions struct {
1941	// placeholder for future optional parameters
1942}
1943
1944// ApplicationGatewaysListAvailableSSLOptionsOptions contains the optional parameters for the ApplicationGateways.ListAvailableSSLOptions method.
1945type ApplicationGatewaysListAvailableSSLOptionsOptions struct {
1946	// placeholder for future optional parameters
1947}
1948
1949// ApplicationGatewaysListAvailableSSLPredefinedPoliciesOptions contains the optional parameters for the ApplicationGateways.ListAvailableSSLPredefinedPolicies
1950// method.
1951type ApplicationGatewaysListAvailableSSLPredefinedPoliciesOptions struct {
1952	// placeholder for future optional parameters
1953}
1954
1955// ApplicationGatewaysListAvailableServerVariablesOptions contains the optional parameters for the ApplicationGateways.ListAvailableServerVariables method.
1956type ApplicationGatewaysListAvailableServerVariablesOptions struct {
1957	// placeholder for future optional parameters
1958}
1959
1960// ApplicationGatewaysListAvailableWafRuleSetsOptions contains the optional parameters for the ApplicationGateways.ListAvailableWafRuleSets method.
1961type ApplicationGatewaysListAvailableWafRuleSetsOptions struct {
1962	// placeholder for future optional parameters
1963}
1964
1965// ApplicationGatewaysListOptions contains the optional parameters for the ApplicationGateways.List method.
1966type ApplicationGatewaysListOptions struct {
1967	// placeholder for future optional parameters
1968}
1969
1970// ApplicationGatewaysUpdateTagsOptions contains the optional parameters for the ApplicationGateways.UpdateTags method.
1971type ApplicationGatewaysUpdateTagsOptions struct {
1972	// placeholder for future optional parameters
1973}
1974
1975// ApplicationRule - Rule of type application.
1976type ApplicationRule struct {
1977	FirewallPolicyRule
1978	// List of destination IP addresses or Service Tags.
1979	DestinationAddresses []*string `json:"destinationAddresses,omitempty"`
1980
1981	// List of FQDN Tags for this rule.
1982	FqdnTags []*string `json:"fqdnTags,omitempty"`
1983
1984	// Array of Application Protocols.
1985	Protocols []*FirewallPolicyRuleApplicationProtocol `json:"protocols,omitempty"`
1986
1987	// List of source IP addresses for this rule.
1988	SourceAddresses []*string `json:"sourceAddresses,omitempty"`
1989
1990	// List of source IpGroups for this rule.
1991	SourceIPGroups []*string `json:"sourceIpGroups,omitempty"`
1992
1993	// List of FQDNs for this rule.
1994	TargetFqdns []*string `json:"targetFqdns,omitempty"`
1995
1996	// List of Urls for this rule condition.
1997	TargetUrls []*string `json:"targetUrls,omitempty"`
1998
1999	// Terminate TLS connections for this rule.
2000	TerminateTLS *bool `json:"terminateTLS,omitempty"`
2001
2002	// List of destination azure web categories.
2003	WebCategories []*string `json:"webCategories,omitempty"`
2004}
2005
2006// MarshalJSON implements the json.Marshaller interface for type ApplicationRule.
2007func (a ApplicationRule) MarshalJSON() ([]byte, error) {
2008	objectMap := a.FirewallPolicyRule.marshalInternal(FirewallPolicyRuleTypeApplicationRule)
2009	populate(objectMap, "destinationAddresses", a.DestinationAddresses)
2010	populate(objectMap, "fqdnTags", a.FqdnTags)
2011	populate(objectMap, "protocols", a.Protocols)
2012	populate(objectMap, "sourceAddresses", a.SourceAddresses)
2013	populate(objectMap, "sourceIpGroups", a.SourceIPGroups)
2014	populate(objectMap, "targetFqdns", a.TargetFqdns)
2015	populate(objectMap, "targetUrls", a.TargetUrls)
2016	populate(objectMap, "terminateTLS", a.TerminateTLS)
2017	populate(objectMap, "webCategories", a.WebCategories)
2018	return json.Marshal(objectMap)
2019}
2020
2021// UnmarshalJSON implements the json.Unmarshaller interface for type ApplicationRule.
2022func (a *ApplicationRule) UnmarshalJSON(data []byte) error {
2023	var rawMsg map[string]json.RawMessage
2024	if err := json.Unmarshal(data, &rawMsg); err != nil {
2025		return err
2026	}
2027	for key, val := range rawMsg {
2028		var err error
2029		switch key {
2030		case "destinationAddresses":
2031			err = unpopulate(val, &a.DestinationAddresses)
2032			delete(rawMsg, key)
2033		case "fqdnTags":
2034			err = unpopulate(val, &a.FqdnTags)
2035			delete(rawMsg, key)
2036		case "protocols":
2037			err = unpopulate(val, &a.Protocols)
2038			delete(rawMsg, key)
2039		case "sourceAddresses":
2040			err = unpopulate(val, &a.SourceAddresses)
2041			delete(rawMsg, key)
2042		case "sourceIpGroups":
2043			err = unpopulate(val, &a.SourceIPGroups)
2044			delete(rawMsg, key)
2045		case "targetFqdns":
2046			err = unpopulate(val, &a.TargetFqdns)
2047			delete(rawMsg, key)
2048		case "targetUrls":
2049			err = unpopulate(val, &a.TargetUrls)
2050			delete(rawMsg, key)
2051		case "terminateTLS":
2052			err = unpopulate(val, &a.TerminateTLS)
2053			delete(rawMsg, key)
2054		case "webCategories":
2055			err = unpopulate(val, &a.WebCategories)
2056			delete(rawMsg, key)
2057		}
2058		if err != nil {
2059			return err
2060		}
2061	}
2062	return a.FirewallPolicyRule.unmarshalInternal(rawMsg)
2063}
2064
2065// ApplicationSecurityGroup - An application security group in a resource group.
2066type ApplicationSecurityGroup struct {
2067	Resource
2068	// Properties of the application security group.
2069	Properties *ApplicationSecurityGroupPropertiesFormat `json:"properties,omitempty"`
2070
2071	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
2072	Etag *string `json:"etag,omitempty" azure:"ro"`
2073}
2074
2075// MarshalJSON implements the json.Marshaller interface for type ApplicationSecurityGroup.
2076func (a ApplicationSecurityGroup) MarshalJSON() ([]byte, error) {
2077	objectMap := a.Resource.marshalInternal()
2078	populate(objectMap, "etag", a.Etag)
2079	populate(objectMap, "properties", a.Properties)
2080	return json.Marshal(objectMap)
2081}
2082
2083// ApplicationSecurityGroupListResult - A list of application security groups.
2084type ApplicationSecurityGroupListResult struct {
2085	// A list of application security groups.
2086	Value []*ApplicationSecurityGroup `json:"value,omitempty"`
2087
2088	// READ-ONLY; The URL to get the next set of results.
2089	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
2090}
2091
2092// MarshalJSON implements the json.Marshaller interface for type ApplicationSecurityGroupListResult.
2093func (a ApplicationSecurityGroupListResult) MarshalJSON() ([]byte, error) {
2094	objectMap := make(map[string]interface{})
2095	populate(objectMap, "nextLink", a.NextLink)
2096	populate(objectMap, "value", a.Value)
2097	return json.Marshal(objectMap)
2098}
2099
2100// ApplicationSecurityGroupPropertiesFormat - Application security group properties.
2101type ApplicationSecurityGroupPropertiesFormat struct {
2102	// READ-ONLY; The provisioning state of the application security group resource.
2103	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
2104
2105	// READ-ONLY; The resource GUID property of the application security group resource. It uniquely identifies a resource, even if the user changes its name
2106	// or migrate the resource across subscriptions or resource
2107	// groups.
2108	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
2109}
2110
2111// ApplicationSecurityGroupsBeginCreateOrUpdateOptions contains the optional parameters for the ApplicationSecurityGroups.BeginCreateOrUpdate method.
2112type ApplicationSecurityGroupsBeginCreateOrUpdateOptions struct {
2113	// placeholder for future optional parameters
2114}
2115
2116// ApplicationSecurityGroupsBeginDeleteOptions contains the optional parameters for the ApplicationSecurityGroups.BeginDelete method.
2117type ApplicationSecurityGroupsBeginDeleteOptions struct {
2118	// placeholder for future optional parameters
2119}
2120
2121// ApplicationSecurityGroupsGetOptions contains the optional parameters for the ApplicationSecurityGroups.Get method.
2122type ApplicationSecurityGroupsGetOptions struct {
2123	// placeholder for future optional parameters
2124}
2125
2126// ApplicationSecurityGroupsListAllOptions contains the optional parameters for the ApplicationSecurityGroups.ListAll method.
2127type ApplicationSecurityGroupsListAllOptions struct {
2128	// placeholder for future optional parameters
2129}
2130
2131// ApplicationSecurityGroupsListOptions contains the optional parameters for the ApplicationSecurityGroups.List method.
2132type ApplicationSecurityGroupsListOptions struct {
2133	// placeholder for future optional parameters
2134}
2135
2136// ApplicationSecurityGroupsUpdateTagsOptions contains the optional parameters for the ApplicationSecurityGroups.UpdateTags method.
2137type ApplicationSecurityGroupsUpdateTagsOptions struct {
2138	// placeholder for future optional parameters
2139}
2140
2141// AuthorizationListResult - Response for ListAuthorizations API service call retrieves all authorizations that belongs to an ExpressRouteCircuit.
2142type AuthorizationListResult struct {
2143	// The URL to get the next set of results.
2144	NextLink *string `json:"nextLink,omitempty"`
2145
2146	// The authorizations in an ExpressRoute Circuit.
2147	Value []*ExpressRouteCircuitAuthorization `json:"value,omitempty"`
2148}
2149
2150// MarshalJSON implements the json.Marshaller interface for type AuthorizationListResult.
2151func (a AuthorizationListResult) MarshalJSON() ([]byte, error) {
2152	objectMap := make(map[string]interface{})
2153	populate(objectMap, "nextLink", a.NextLink)
2154	populate(objectMap, "value", a.Value)
2155	return json.Marshal(objectMap)
2156}
2157
2158// AuthorizationPropertiesFormat - Properties of ExpressRouteCircuitAuthorization.
2159type AuthorizationPropertiesFormat struct {
2160	// The authorization key.
2161	AuthorizationKey *string `json:"authorizationKey,omitempty"`
2162
2163	// The authorization use status.
2164	AuthorizationUseStatus *AuthorizationUseStatus `json:"authorizationUseStatus,omitempty"`
2165
2166	// READ-ONLY; The provisioning state of the authorization resource.
2167	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
2168}
2169
2170// AutoApprovedPrivateLinkService - The information of an AutoApprovedPrivateLinkService.
2171type AutoApprovedPrivateLinkService struct {
2172	// The id of the private link service resource.
2173	PrivateLinkService *string `json:"privateLinkService,omitempty"`
2174}
2175
2176// AutoApprovedPrivateLinkServicesResult - An array of private link service id that can be linked to a private end point with auto approved.
2177type AutoApprovedPrivateLinkServicesResult struct {
2178	// An array of auto approved private link service.
2179	Value []*AutoApprovedPrivateLinkService `json:"value,omitempty"`
2180
2181	// READ-ONLY; The URL to get the next set of results.
2182	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
2183}
2184
2185// MarshalJSON implements the json.Marshaller interface for type AutoApprovedPrivateLinkServicesResult.
2186func (a AutoApprovedPrivateLinkServicesResult) MarshalJSON() ([]byte, error) {
2187	objectMap := make(map[string]interface{})
2188	populate(objectMap, "nextLink", a.NextLink)
2189	populate(objectMap, "value", a.Value)
2190	return json.Marshal(objectMap)
2191}
2192
2193// Availability of the metric.
2194type Availability struct {
2195	// Duration of the availability blob.
2196	BlobDuration *string `json:"blobDuration,omitempty"`
2197
2198	// The retention of the availability.
2199	Retention *string `json:"retention,omitempty"`
2200
2201	// The time grain of the availability.
2202	TimeGrain *string `json:"timeGrain,omitempty"`
2203}
2204
2205// AvailableDelegation - The serviceName of an AvailableDelegation indicates a possible delegation for a subnet.
2206type AvailableDelegation struct {
2207	// The actions permitted to the service upon delegation.
2208	Actions []*string `json:"actions,omitempty"`
2209
2210	// A unique identifier of the AvailableDelegation resource.
2211	ID *string `json:"id,omitempty"`
2212
2213	// The name of the AvailableDelegation resource.
2214	Name *string `json:"name,omitempty"`
2215
2216	// The name of the service and resource.
2217	ServiceName *string `json:"serviceName,omitempty"`
2218
2219	// Resource type.
2220	Type *string `json:"type,omitempty"`
2221}
2222
2223// MarshalJSON implements the json.Marshaller interface for type AvailableDelegation.
2224func (a AvailableDelegation) MarshalJSON() ([]byte, error) {
2225	objectMap := make(map[string]interface{})
2226	populate(objectMap, "actions", a.Actions)
2227	populate(objectMap, "id", a.ID)
2228	populate(objectMap, "name", a.Name)
2229	populate(objectMap, "serviceName", a.ServiceName)
2230	populate(objectMap, "type", a.Type)
2231	return json.Marshal(objectMap)
2232}
2233
2234// AvailableDelegationsListOptions contains the optional parameters for the AvailableDelegations.List method.
2235type AvailableDelegationsListOptions struct {
2236	// placeholder for future optional parameters
2237}
2238
2239// AvailableDelegationsResult - An array of available delegations.
2240type AvailableDelegationsResult struct {
2241	// An array of available delegations.
2242	Value []*AvailableDelegation `json:"value,omitempty"`
2243
2244	// READ-ONLY; The URL to get the next set of results.
2245	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
2246}
2247
2248// MarshalJSON implements the json.Marshaller interface for type AvailableDelegationsResult.
2249func (a AvailableDelegationsResult) MarshalJSON() ([]byte, error) {
2250	objectMap := make(map[string]interface{})
2251	populate(objectMap, "nextLink", a.NextLink)
2252	populate(objectMap, "value", a.Value)
2253	return json.Marshal(objectMap)
2254}
2255
2256// AvailableEndpointServicesListOptions contains the optional parameters for the AvailableEndpointServices.List method.
2257type AvailableEndpointServicesListOptions struct {
2258	// placeholder for future optional parameters
2259}
2260
2261// AvailablePrivateEndpointType - The information of an AvailablePrivateEndpointType.
2262type AvailablePrivateEndpointType struct {
2263	// Display name of the resource.
2264	DisplayName *string `json:"displayName,omitempty"`
2265
2266	// A unique identifier of the AvailablePrivateEndpoint Type resource.
2267	ID *string `json:"id,omitempty"`
2268
2269	// The name of the service and resource.
2270	Name *string `json:"name,omitempty"`
2271
2272	// The name of the service and resource.
2273	ResourceName *string `json:"resourceName,omitempty"`
2274
2275	// Resource type.
2276	Type *string `json:"type,omitempty"`
2277}
2278
2279// AvailablePrivateEndpointTypesListByResourceGroupOptions contains the optional parameters for the AvailablePrivateEndpointTypes.ListByResourceGroup method.
2280type AvailablePrivateEndpointTypesListByResourceGroupOptions struct {
2281	// placeholder for future optional parameters
2282}
2283
2284// AvailablePrivateEndpointTypesListOptions contains the optional parameters for the AvailablePrivateEndpointTypes.List method.
2285type AvailablePrivateEndpointTypesListOptions struct {
2286	// placeholder for future optional parameters
2287}
2288
2289// AvailablePrivateEndpointTypesResult - An array of available PrivateEndpoint types.
2290type AvailablePrivateEndpointTypesResult struct {
2291	// An array of available privateEndpoint type.
2292	Value []*AvailablePrivateEndpointType `json:"value,omitempty"`
2293
2294	// READ-ONLY; The URL to get the next set of results.
2295	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
2296}
2297
2298// MarshalJSON implements the json.Marshaller interface for type AvailablePrivateEndpointTypesResult.
2299func (a AvailablePrivateEndpointTypesResult) MarshalJSON() ([]byte, error) {
2300	objectMap := make(map[string]interface{})
2301	populate(objectMap, "nextLink", a.NextLink)
2302	populate(objectMap, "value", a.Value)
2303	return json.Marshal(objectMap)
2304}
2305
2306// AvailableProvidersList - List of available countries with details.
2307type AvailableProvidersList struct {
2308	// REQUIRED; List of available countries.
2309	Countries []*AvailableProvidersListCountry `json:"countries,omitempty"`
2310}
2311
2312// MarshalJSON implements the json.Marshaller interface for type AvailableProvidersList.
2313func (a AvailableProvidersList) MarshalJSON() ([]byte, error) {
2314	objectMap := make(map[string]interface{})
2315	populate(objectMap, "countries", a.Countries)
2316	return json.Marshal(objectMap)
2317}
2318
2319// AvailableProvidersListCity - City or town details.
2320type AvailableProvidersListCity struct {
2321	// The city or town name.
2322	CityName *string `json:"cityName,omitempty"`
2323
2324	// A list of Internet service providers.
2325	Providers []*string `json:"providers,omitempty"`
2326}
2327
2328// MarshalJSON implements the json.Marshaller interface for type AvailableProvidersListCity.
2329func (a AvailableProvidersListCity) MarshalJSON() ([]byte, error) {
2330	objectMap := make(map[string]interface{})
2331	populate(objectMap, "cityName", a.CityName)
2332	populate(objectMap, "providers", a.Providers)
2333	return json.Marshal(objectMap)
2334}
2335
2336// AvailableProvidersListCountry - Country details.
2337type AvailableProvidersListCountry struct {
2338	// The country name.
2339	CountryName *string `json:"countryName,omitempty"`
2340
2341	// A list of Internet service providers.
2342	Providers []*string `json:"providers,omitempty"`
2343
2344	// List of available states in the country.
2345	States []*AvailableProvidersListState `json:"states,omitempty"`
2346}
2347
2348// MarshalJSON implements the json.Marshaller interface for type AvailableProvidersListCountry.
2349func (a AvailableProvidersListCountry) MarshalJSON() ([]byte, error) {
2350	objectMap := make(map[string]interface{})
2351	populate(objectMap, "countryName", a.CountryName)
2352	populate(objectMap, "providers", a.Providers)
2353	populate(objectMap, "states", a.States)
2354	return json.Marshal(objectMap)
2355}
2356
2357// AvailableProvidersListParameters - Constraints that determine the list of available Internet service providers.
2358type AvailableProvidersListParameters struct {
2359	// A list of Azure regions.
2360	AzureLocations []*string `json:"azureLocations,omitempty"`
2361
2362	// The city or town for available providers list.
2363	City *string `json:"city,omitempty"`
2364
2365	// The country for available providers list.
2366	Country *string `json:"country,omitempty"`
2367
2368	// The state for available providers list.
2369	State *string `json:"state,omitempty"`
2370}
2371
2372// MarshalJSON implements the json.Marshaller interface for type AvailableProvidersListParameters.
2373func (a AvailableProvidersListParameters) MarshalJSON() ([]byte, error) {
2374	objectMap := make(map[string]interface{})
2375	populate(objectMap, "azureLocations", a.AzureLocations)
2376	populate(objectMap, "city", a.City)
2377	populate(objectMap, "country", a.Country)
2378	populate(objectMap, "state", a.State)
2379	return json.Marshal(objectMap)
2380}
2381
2382// AvailableProvidersListState - State details.
2383type AvailableProvidersListState struct {
2384	// List of available cities or towns in the state.
2385	Cities []*AvailableProvidersListCity `json:"cities,omitempty"`
2386
2387	// A list of Internet service providers.
2388	Providers []*string `json:"providers,omitempty"`
2389
2390	// The state name.
2391	StateName *string `json:"stateName,omitempty"`
2392}
2393
2394// MarshalJSON implements the json.Marshaller interface for type AvailableProvidersListState.
2395func (a AvailableProvidersListState) MarshalJSON() ([]byte, error) {
2396	objectMap := make(map[string]interface{})
2397	populate(objectMap, "cities", a.Cities)
2398	populate(objectMap, "providers", a.Providers)
2399	populate(objectMap, "stateName", a.StateName)
2400	return json.Marshal(objectMap)
2401}
2402
2403// AvailableResourceGroupDelegationsListOptions contains the optional parameters for the AvailableResourceGroupDelegations.List method.
2404type AvailableResourceGroupDelegationsListOptions struct {
2405	// placeholder for future optional parameters
2406}
2407
2408// AvailableServiceAlias - The available service alias.
2409type AvailableServiceAlias struct {
2410	// The ID of the service alias.
2411	ID *string `json:"id,omitempty"`
2412
2413	// The name of the service alias.
2414	Name *string `json:"name,omitempty"`
2415
2416	// The resource name of the service alias.
2417	ResourceName *string `json:"resourceName,omitempty"`
2418
2419	// The type of the resource.
2420	Type *string `json:"type,omitempty"`
2421}
2422
2423// AvailableServiceAliasesListByResourceGroupOptions contains the optional parameters for the AvailableServiceAliases.ListByResourceGroup method.
2424type AvailableServiceAliasesListByResourceGroupOptions struct {
2425	// placeholder for future optional parameters
2426}
2427
2428// AvailableServiceAliasesListOptions contains the optional parameters for the AvailableServiceAliases.List method.
2429type AvailableServiceAliasesListOptions struct {
2430	// placeholder for future optional parameters
2431}
2432
2433// AvailableServiceAliasesResult - An array of available service aliases.
2434type AvailableServiceAliasesResult struct {
2435	// An array of available service aliases.
2436	Value []*AvailableServiceAlias `json:"value,omitempty"`
2437
2438	// READ-ONLY; The URL to get the next set of results.
2439	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
2440}
2441
2442// MarshalJSON implements the json.Marshaller interface for type AvailableServiceAliasesResult.
2443func (a AvailableServiceAliasesResult) MarshalJSON() ([]byte, error) {
2444	objectMap := make(map[string]interface{})
2445	populate(objectMap, "nextLink", a.NextLink)
2446	populate(objectMap, "value", a.Value)
2447	return json.Marshal(objectMap)
2448}
2449
2450// AzureAsyncOperationResult - The response body contains the status of the specified asynchronous operation, indicating whether it has succeeded, is in
2451// progress, or has failed. Note that this status is distinct from the HTTP
2452// status code returned for the Get Operation Status operation itself. If the asynchronous operation succeeded, the response body includes the HTTP status
2453// code for the successful request. If the
2454// asynchronous operation failed, the response body includes the HTTP status code for the failed request and error information regarding the failure.
2455type AzureAsyncOperationResult struct {
2456	// Details of the error occurred during specified asynchronous operation.
2457	Error *Error `json:"error,omitempty"`
2458
2459	// Status of the Azure async operation.
2460	Status *NetworkOperationStatus `json:"status,omitempty"`
2461}
2462
2463// AzureFirewall - Azure Firewall resource.
2464type AzureFirewall struct {
2465	Resource
2466	// Properties of the azure firewall.
2467	Properties *AzureFirewallPropertiesFormat `json:"properties,omitempty"`
2468
2469	// A list of availability zones denoting where the resource needs to come from.
2470	Zones []*string `json:"zones,omitempty"`
2471
2472	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
2473	Etag *string `json:"etag,omitempty" azure:"ro"`
2474}
2475
2476// MarshalJSON implements the json.Marshaller interface for type AzureFirewall.
2477func (a AzureFirewall) MarshalJSON() ([]byte, error) {
2478	objectMap := a.Resource.marshalInternal()
2479	populate(objectMap, "etag", a.Etag)
2480	populate(objectMap, "properties", a.Properties)
2481	populate(objectMap, "zones", a.Zones)
2482	return json.Marshal(objectMap)
2483}
2484
2485// AzureFirewallApplicationRule - Properties of an application rule.
2486type AzureFirewallApplicationRule struct {
2487	// Description of the rule.
2488	Description *string `json:"description,omitempty"`
2489
2490	// List of FQDN Tags for this rule.
2491	FqdnTags []*string `json:"fqdnTags,omitempty"`
2492
2493	// Name of the application rule.
2494	Name *string `json:"name,omitempty"`
2495
2496	// Array of ApplicationRuleProtocols.
2497	Protocols []*AzureFirewallApplicationRuleProtocol `json:"protocols,omitempty"`
2498
2499	// List of source IP addresses for this rule.
2500	SourceAddresses []*string `json:"sourceAddresses,omitempty"`
2501
2502	// List of source IpGroups for this rule.
2503	SourceIPGroups []*string `json:"sourceIpGroups,omitempty"`
2504
2505	// List of FQDNs for this rule.
2506	TargetFqdns []*string `json:"targetFqdns,omitempty"`
2507}
2508
2509// MarshalJSON implements the json.Marshaller interface for type AzureFirewallApplicationRule.
2510func (a AzureFirewallApplicationRule) MarshalJSON() ([]byte, error) {
2511	objectMap := make(map[string]interface{})
2512	populate(objectMap, "description", a.Description)
2513	populate(objectMap, "fqdnTags", a.FqdnTags)
2514	populate(objectMap, "name", a.Name)
2515	populate(objectMap, "protocols", a.Protocols)
2516	populate(objectMap, "sourceAddresses", a.SourceAddresses)
2517	populate(objectMap, "sourceIpGroups", a.SourceIPGroups)
2518	populate(objectMap, "targetFqdns", a.TargetFqdns)
2519	return json.Marshal(objectMap)
2520}
2521
2522// AzureFirewallApplicationRuleCollection - Application rule collection resource.
2523type AzureFirewallApplicationRuleCollection struct {
2524	SubResource
2525	// The name of the resource that is unique within the Azure firewall. This name can be used to access the resource.
2526	Name *string `json:"name,omitempty"`
2527
2528	// Properties of the azure firewall application rule collection.
2529	Properties *AzureFirewallApplicationRuleCollectionPropertiesFormat `json:"properties,omitempty"`
2530
2531	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
2532	Etag *string `json:"etag,omitempty" azure:"ro"`
2533}
2534
2535// MarshalJSON implements the json.Marshaller interface for type AzureFirewallApplicationRuleCollection.
2536func (a AzureFirewallApplicationRuleCollection) MarshalJSON() ([]byte, error) {
2537	objectMap := a.SubResource.marshalInternal()
2538	populate(objectMap, "etag", a.Etag)
2539	populate(objectMap, "name", a.Name)
2540	populate(objectMap, "properties", a.Properties)
2541	return json.Marshal(objectMap)
2542}
2543
2544// AzureFirewallApplicationRuleCollectionPropertiesFormat - Properties of the application rule collection.
2545type AzureFirewallApplicationRuleCollectionPropertiesFormat struct {
2546	// The action type of a rule collection.
2547	Action *AzureFirewallRCAction `json:"action,omitempty"`
2548
2549	// Priority of the application rule collection resource.
2550	Priority *int32 `json:"priority,omitempty"`
2551
2552	// Collection of rules used by a application rule collection.
2553	Rules []*AzureFirewallApplicationRule `json:"rules,omitempty"`
2554
2555	// READ-ONLY; The provisioning state of the application rule collection resource.
2556	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
2557}
2558
2559// MarshalJSON implements the json.Marshaller interface for type AzureFirewallApplicationRuleCollectionPropertiesFormat.
2560func (a AzureFirewallApplicationRuleCollectionPropertiesFormat) MarshalJSON() ([]byte, error) {
2561	objectMap := make(map[string]interface{})
2562	populate(objectMap, "action", a.Action)
2563	populate(objectMap, "priority", a.Priority)
2564	populate(objectMap, "provisioningState", a.ProvisioningState)
2565	populate(objectMap, "rules", a.Rules)
2566	return json.Marshal(objectMap)
2567}
2568
2569// AzureFirewallApplicationRuleProtocol - Properties of the application rule protocol.
2570type AzureFirewallApplicationRuleProtocol struct {
2571	// Port number for the protocol, cannot be greater than 64000. This field is optional.
2572	Port *int32 `json:"port,omitempty"`
2573
2574	// Protocol type.
2575	ProtocolType *AzureFirewallApplicationRuleProtocolType `json:"protocolType,omitempty"`
2576}
2577
2578// AzureFirewallFqdnTag - Azure Firewall FQDN Tag Resource.
2579type AzureFirewallFqdnTag struct {
2580	Resource
2581	// Properties of the azure firewall FQDN tag.
2582	Properties *AzureFirewallFqdnTagPropertiesFormat `json:"properties,omitempty"`
2583
2584	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
2585	Etag *string `json:"etag,omitempty" azure:"ro"`
2586}
2587
2588// MarshalJSON implements the json.Marshaller interface for type AzureFirewallFqdnTag.
2589func (a AzureFirewallFqdnTag) MarshalJSON() ([]byte, error) {
2590	objectMap := a.Resource.marshalInternal()
2591	populate(objectMap, "etag", a.Etag)
2592	populate(objectMap, "properties", a.Properties)
2593	return json.Marshal(objectMap)
2594}
2595
2596// AzureFirewallFqdnTagListResult - Response for ListAzureFirewallFqdnTags API service call.
2597type AzureFirewallFqdnTagListResult struct {
2598	// URL to get the next set of results.
2599	NextLink *string `json:"nextLink,omitempty"`
2600
2601	// List of Azure Firewall FQDN Tags in a resource group.
2602	Value []*AzureFirewallFqdnTag `json:"value,omitempty"`
2603}
2604
2605// MarshalJSON implements the json.Marshaller interface for type AzureFirewallFqdnTagListResult.
2606func (a AzureFirewallFqdnTagListResult) MarshalJSON() ([]byte, error) {
2607	objectMap := make(map[string]interface{})
2608	populate(objectMap, "nextLink", a.NextLink)
2609	populate(objectMap, "value", a.Value)
2610	return json.Marshal(objectMap)
2611}
2612
2613// AzureFirewallFqdnTagPropertiesFormat - Azure Firewall FQDN Tag Properties.
2614type AzureFirewallFqdnTagPropertiesFormat struct {
2615	// READ-ONLY; The name of this FQDN Tag.
2616	FqdnTagName *string `json:"fqdnTagName,omitempty" azure:"ro"`
2617
2618	// READ-ONLY; The provisioning state of the Azure firewall FQDN tag resource.
2619	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
2620}
2621
2622// AzureFirewallFqdnTagsListAllOptions contains the optional parameters for the AzureFirewallFqdnTags.ListAll method.
2623type AzureFirewallFqdnTagsListAllOptions struct {
2624	// placeholder for future optional parameters
2625}
2626
2627// AzureFirewallIPConfiguration - IP configuration of an Azure Firewall.
2628type AzureFirewallIPConfiguration struct {
2629	SubResource
2630	// Name of the resource that is unique within a resource group. This name can be used to access the resource.
2631	Name *string `json:"name,omitempty"`
2632
2633	// Properties of the azure firewall IP configuration.
2634	Properties *AzureFirewallIPConfigurationPropertiesFormat `json:"properties,omitempty"`
2635
2636	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
2637	Etag *string `json:"etag,omitempty" azure:"ro"`
2638
2639	// READ-ONLY; Type of the resource.
2640	Type *string `json:"type,omitempty" azure:"ro"`
2641}
2642
2643// MarshalJSON implements the json.Marshaller interface for type AzureFirewallIPConfiguration.
2644func (a AzureFirewallIPConfiguration) MarshalJSON() ([]byte, error) {
2645	objectMap := a.SubResource.marshalInternal()
2646	populate(objectMap, "etag", a.Etag)
2647	populate(objectMap, "name", a.Name)
2648	populate(objectMap, "properties", a.Properties)
2649	populate(objectMap, "type", a.Type)
2650	return json.Marshal(objectMap)
2651}
2652
2653// AzureFirewallIPConfigurationPropertiesFormat - Properties of IP configuration of an Azure Firewall.
2654type AzureFirewallIPConfigurationPropertiesFormat struct {
2655	// Reference to the PublicIP resource. This field is a mandatory input if subnet is not null.
2656	PublicIPAddress *SubResource `json:"publicIPAddress,omitempty"`
2657
2658	// Reference to the subnet resource. This resource must be named 'AzureFirewallSubnet' or 'AzureFirewallManagementSubnet'.
2659	Subnet *SubResource `json:"subnet,omitempty"`
2660
2661	// READ-ONLY; The Firewall Internal Load Balancer IP to be used as the next hop in User Defined Routes.
2662	PrivateIPAddress *string `json:"privateIPAddress,omitempty" azure:"ro"`
2663
2664	// READ-ONLY; The provisioning state of the Azure firewall IP configuration resource.
2665	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
2666}
2667
2668// AzureFirewallIPGroups - IpGroups associated with azure firewall.
2669type AzureFirewallIPGroups struct {
2670	// READ-ONLY; The iteration number.
2671	ChangeNumber *string `json:"changeNumber,omitempty" azure:"ro"`
2672
2673	// READ-ONLY; Resource ID.
2674	ID *string `json:"id,omitempty" azure:"ro"`
2675}
2676
2677// AzureFirewallListResult - Response for ListAzureFirewalls API service call.
2678type AzureFirewallListResult struct {
2679	// URL to get the next set of results.
2680	NextLink *string `json:"nextLink,omitempty"`
2681
2682	// List of Azure Firewalls in a resource group.
2683	Value []*AzureFirewall `json:"value,omitempty"`
2684}
2685
2686// MarshalJSON implements the json.Marshaller interface for type AzureFirewallListResult.
2687func (a AzureFirewallListResult) MarshalJSON() ([]byte, error) {
2688	objectMap := make(map[string]interface{})
2689	populate(objectMap, "nextLink", a.NextLink)
2690	populate(objectMap, "value", a.Value)
2691	return json.Marshal(objectMap)
2692}
2693
2694// AzureFirewallNatRCAction - AzureFirewall NAT Rule Collection Action.
2695type AzureFirewallNatRCAction struct {
2696	// The type of action.
2697	Type *AzureFirewallNatRCActionType `json:"type,omitempty"`
2698}
2699
2700// AzureFirewallNatRule - Properties of a NAT rule.
2701type AzureFirewallNatRule struct {
2702	// Description of the rule.
2703	Description *string `json:"description,omitempty"`
2704
2705	// List of destination IP addresses for this rule. Supports IP ranges, prefixes, and service tags.
2706	DestinationAddresses []*string `json:"destinationAddresses,omitempty"`
2707
2708	// List of destination ports.
2709	DestinationPorts []*string `json:"destinationPorts,omitempty"`
2710
2711	// Name of the NAT rule.
2712	Name *string `json:"name,omitempty"`
2713
2714	// Array of AzureFirewallNetworkRuleProtocols applicable to this NAT rule.
2715	Protocols []*AzureFirewallNetworkRuleProtocol `json:"protocols,omitempty"`
2716
2717	// List of source IP addresses for this rule.
2718	SourceAddresses []*string `json:"sourceAddresses,omitempty"`
2719
2720	// List of source IpGroups for this rule.
2721	SourceIPGroups []*string `json:"sourceIpGroups,omitempty"`
2722
2723	// The translated address for this NAT rule.
2724	TranslatedAddress *string `json:"translatedAddress,omitempty"`
2725
2726	// The translated FQDN for this NAT rule.
2727	TranslatedFqdn *string `json:"translatedFqdn,omitempty"`
2728
2729	// The translated port for this NAT rule.
2730	TranslatedPort *string `json:"translatedPort,omitempty"`
2731}
2732
2733// MarshalJSON implements the json.Marshaller interface for type AzureFirewallNatRule.
2734func (a AzureFirewallNatRule) MarshalJSON() ([]byte, error) {
2735	objectMap := make(map[string]interface{})
2736	populate(objectMap, "description", a.Description)
2737	populate(objectMap, "destinationAddresses", a.DestinationAddresses)
2738	populate(objectMap, "destinationPorts", a.DestinationPorts)
2739	populate(objectMap, "name", a.Name)
2740	populate(objectMap, "protocols", a.Protocols)
2741	populate(objectMap, "sourceAddresses", a.SourceAddresses)
2742	populate(objectMap, "sourceIpGroups", a.SourceIPGroups)
2743	populate(objectMap, "translatedAddress", a.TranslatedAddress)
2744	populate(objectMap, "translatedFqdn", a.TranslatedFqdn)
2745	populate(objectMap, "translatedPort", a.TranslatedPort)
2746	return json.Marshal(objectMap)
2747}
2748
2749// AzureFirewallNatRuleCollection - NAT rule collection resource.
2750type AzureFirewallNatRuleCollection struct {
2751	SubResource
2752	// The name of the resource that is unique within the Azure firewall. This name can be used to access the resource.
2753	Name *string `json:"name,omitempty"`
2754
2755	// Properties of the azure firewall NAT rule collection.
2756	Properties *AzureFirewallNatRuleCollectionProperties `json:"properties,omitempty"`
2757
2758	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
2759	Etag *string `json:"etag,omitempty" azure:"ro"`
2760}
2761
2762// MarshalJSON implements the json.Marshaller interface for type AzureFirewallNatRuleCollection.
2763func (a AzureFirewallNatRuleCollection) MarshalJSON() ([]byte, error) {
2764	objectMap := a.SubResource.marshalInternal()
2765	populate(objectMap, "etag", a.Etag)
2766	populate(objectMap, "name", a.Name)
2767	populate(objectMap, "properties", a.Properties)
2768	return json.Marshal(objectMap)
2769}
2770
2771// AzureFirewallNatRuleCollectionProperties - Properties of the NAT rule collection.
2772type AzureFirewallNatRuleCollectionProperties struct {
2773	// The action type of a NAT rule collection.
2774	Action *AzureFirewallNatRCAction `json:"action,omitempty"`
2775
2776	// Priority of the NAT rule collection resource.
2777	Priority *int32 `json:"priority,omitempty"`
2778
2779	// Collection of rules used by a NAT rule collection.
2780	Rules []*AzureFirewallNatRule `json:"rules,omitempty"`
2781
2782	// READ-ONLY; The provisioning state of the NAT rule collection resource.
2783	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
2784}
2785
2786// MarshalJSON implements the json.Marshaller interface for type AzureFirewallNatRuleCollectionProperties.
2787func (a AzureFirewallNatRuleCollectionProperties) MarshalJSON() ([]byte, error) {
2788	objectMap := make(map[string]interface{})
2789	populate(objectMap, "action", a.Action)
2790	populate(objectMap, "priority", a.Priority)
2791	populate(objectMap, "provisioningState", a.ProvisioningState)
2792	populate(objectMap, "rules", a.Rules)
2793	return json.Marshal(objectMap)
2794}
2795
2796// AzureFirewallNetworkRule - Properties of the network rule.
2797type AzureFirewallNetworkRule struct {
2798	// Description of the rule.
2799	Description *string `json:"description,omitempty"`
2800
2801	// List of destination IP addresses.
2802	DestinationAddresses []*string `json:"destinationAddresses,omitempty"`
2803
2804	// List of destination FQDNs.
2805	DestinationFqdns []*string `json:"destinationFqdns,omitempty"`
2806
2807	// List of destination IpGroups for this rule.
2808	DestinationIPGroups []*string `json:"destinationIpGroups,omitempty"`
2809
2810	// List of destination ports.
2811	DestinationPorts []*string `json:"destinationPorts,omitempty"`
2812
2813	// Name of the network rule.
2814	Name *string `json:"name,omitempty"`
2815
2816	// Array of AzureFirewallNetworkRuleProtocols.
2817	Protocols []*AzureFirewallNetworkRuleProtocol `json:"protocols,omitempty"`
2818
2819	// List of source IP addresses for this rule.
2820	SourceAddresses []*string `json:"sourceAddresses,omitempty"`
2821
2822	// List of source IpGroups for this rule.
2823	SourceIPGroups []*string `json:"sourceIpGroups,omitempty"`
2824}
2825
2826// MarshalJSON implements the json.Marshaller interface for type AzureFirewallNetworkRule.
2827func (a AzureFirewallNetworkRule) MarshalJSON() ([]byte, error) {
2828	objectMap := make(map[string]interface{})
2829	populate(objectMap, "description", a.Description)
2830	populate(objectMap, "destinationAddresses", a.DestinationAddresses)
2831	populate(objectMap, "destinationFqdns", a.DestinationFqdns)
2832	populate(objectMap, "destinationIpGroups", a.DestinationIPGroups)
2833	populate(objectMap, "destinationPorts", a.DestinationPorts)
2834	populate(objectMap, "name", a.Name)
2835	populate(objectMap, "protocols", a.Protocols)
2836	populate(objectMap, "sourceAddresses", a.SourceAddresses)
2837	populate(objectMap, "sourceIpGroups", a.SourceIPGroups)
2838	return json.Marshal(objectMap)
2839}
2840
2841// AzureFirewallNetworkRuleCollection - Network rule collection resource.
2842type AzureFirewallNetworkRuleCollection struct {
2843	SubResource
2844	// The name of the resource that is unique within the Azure firewall. This name can be used to access the resource.
2845	Name *string `json:"name,omitempty"`
2846
2847	// Properties of the azure firewall network rule collection.
2848	Properties *AzureFirewallNetworkRuleCollectionPropertiesFormat `json:"properties,omitempty"`
2849
2850	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
2851	Etag *string `json:"etag,omitempty" azure:"ro"`
2852}
2853
2854// MarshalJSON implements the json.Marshaller interface for type AzureFirewallNetworkRuleCollection.
2855func (a AzureFirewallNetworkRuleCollection) MarshalJSON() ([]byte, error) {
2856	objectMap := a.SubResource.marshalInternal()
2857	populate(objectMap, "etag", a.Etag)
2858	populate(objectMap, "name", a.Name)
2859	populate(objectMap, "properties", a.Properties)
2860	return json.Marshal(objectMap)
2861}
2862
2863// AzureFirewallNetworkRuleCollectionPropertiesFormat - Properties of the network rule collection.
2864type AzureFirewallNetworkRuleCollectionPropertiesFormat struct {
2865	// The action type of a rule collection.
2866	Action *AzureFirewallRCAction `json:"action,omitempty"`
2867
2868	// Priority of the network rule collection resource.
2869	Priority *int32 `json:"priority,omitempty"`
2870
2871	// Collection of rules used by a network rule collection.
2872	Rules []*AzureFirewallNetworkRule `json:"rules,omitempty"`
2873
2874	// READ-ONLY; The provisioning state of the network rule collection resource.
2875	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
2876}
2877
2878// MarshalJSON implements the json.Marshaller interface for type AzureFirewallNetworkRuleCollectionPropertiesFormat.
2879func (a AzureFirewallNetworkRuleCollectionPropertiesFormat) MarshalJSON() ([]byte, error) {
2880	objectMap := make(map[string]interface{})
2881	populate(objectMap, "action", a.Action)
2882	populate(objectMap, "priority", a.Priority)
2883	populate(objectMap, "provisioningState", a.ProvisioningState)
2884	populate(objectMap, "rules", a.Rules)
2885	return json.Marshal(objectMap)
2886}
2887
2888// AzureFirewallPropertiesFormat - Properties of the Azure Firewall.
2889type AzureFirewallPropertiesFormat struct {
2890	// The additional properties used to further config this azure firewall.
2891	AdditionalProperties map[string]*string `json:"additionalProperties,omitempty"`
2892
2893	// Collection of application rule collections used by Azure Firewall.
2894	ApplicationRuleCollections []*AzureFirewallApplicationRuleCollection `json:"applicationRuleCollections,omitempty"`
2895
2896	// The firewallPolicy associated with this azure firewall.
2897	FirewallPolicy *SubResource `json:"firewallPolicy,omitempty"`
2898
2899	// IP addresses associated with AzureFirewall.
2900	HubIPAddresses *HubIPAddresses `json:"hubIPAddresses,omitempty"`
2901
2902	// IP configuration of the Azure Firewall resource.
2903	IPConfigurations []*AzureFirewallIPConfiguration `json:"ipConfigurations,omitempty"`
2904
2905	// IP configuration of the Azure Firewall used for management traffic.
2906	ManagementIPConfiguration *AzureFirewallIPConfiguration `json:"managementIpConfiguration,omitempty"`
2907
2908	// Collection of NAT rule collections used by Azure Firewall.
2909	NatRuleCollections []*AzureFirewallNatRuleCollection `json:"natRuleCollections,omitempty"`
2910
2911	// Collection of network rule collections used by Azure Firewall.
2912	NetworkRuleCollections []*AzureFirewallNetworkRuleCollection `json:"networkRuleCollections,omitempty"`
2913
2914	// The Azure Firewall Resource SKU.
2915	SKU *AzureFirewallSKU `json:"sku,omitempty"`
2916
2917	// The operation mode for Threat Intelligence.
2918	ThreatIntelMode *AzureFirewallThreatIntelMode `json:"threatIntelMode,omitempty"`
2919
2920	// The virtualHub to which the firewall belongs.
2921	VirtualHub *SubResource `json:"virtualHub,omitempty"`
2922
2923	// READ-ONLY; IpGroups associated with AzureFirewall.
2924	IPGroups []*AzureFirewallIPGroups `json:"ipGroups,omitempty" azure:"ro"`
2925
2926	// READ-ONLY; The provisioning state of the Azure firewall resource.
2927	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
2928}
2929
2930// MarshalJSON implements the json.Marshaller interface for type AzureFirewallPropertiesFormat.
2931func (a AzureFirewallPropertiesFormat) MarshalJSON() ([]byte, error) {
2932	objectMap := make(map[string]interface{})
2933	populate(objectMap, "additionalProperties", a.AdditionalProperties)
2934	populate(objectMap, "applicationRuleCollections", a.ApplicationRuleCollections)
2935	populate(objectMap, "firewallPolicy", a.FirewallPolicy)
2936	populate(objectMap, "hubIPAddresses", a.HubIPAddresses)
2937	populate(objectMap, "ipConfigurations", a.IPConfigurations)
2938	populate(objectMap, "ipGroups", a.IPGroups)
2939	populate(objectMap, "managementIpConfiguration", a.ManagementIPConfiguration)
2940	populate(objectMap, "natRuleCollections", a.NatRuleCollections)
2941	populate(objectMap, "networkRuleCollections", a.NetworkRuleCollections)
2942	populate(objectMap, "provisioningState", a.ProvisioningState)
2943	populate(objectMap, "sku", a.SKU)
2944	populate(objectMap, "threatIntelMode", a.ThreatIntelMode)
2945	populate(objectMap, "virtualHub", a.VirtualHub)
2946	return json.Marshal(objectMap)
2947}
2948
2949// AzureFirewallPublicIPAddress - Public IP Address associated with azure firewall.
2950type AzureFirewallPublicIPAddress struct {
2951	// Public IP Address value.
2952	Address *string `json:"address,omitempty"`
2953}
2954
2955// AzureFirewallRCAction - Properties of the AzureFirewallRCAction.
2956type AzureFirewallRCAction struct {
2957	// The type of action.
2958	Type *AzureFirewallRCActionType `json:"type,omitempty"`
2959}
2960
2961// AzureFirewallSKU - SKU of an Azure Firewall.
2962type AzureFirewallSKU struct {
2963	// Name of an Azure Firewall SKU.
2964	Name *AzureFirewallSKUName `json:"name,omitempty"`
2965
2966	// Tier of an Azure Firewall.
2967	Tier *AzureFirewallSKUTier `json:"tier,omitempty"`
2968}
2969
2970// AzureFirewallsBeginCreateOrUpdateOptions contains the optional parameters for the AzureFirewalls.BeginCreateOrUpdate method.
2971type AzureFirewallsBeginCreateOrUpdateOptions struct {
2972	// placeholder for future optional parameters
2973}
2974
2975// AzureFirewallsBeginDeleteOptions contains the optional parameters for the AzureFirewalls.BeginDelete method.
2976type AzureFirewallsBeginDeleteOptions struct {
2977	// placeholder for future optional parameters
2978}
2979
2980// AzureFirewallsBeginUpdateTagsOptions contains the optional parameters for the AzureFirewalls.BeginUpdateTags method.
2981type AzureFirewallsBeginUpdateTagsOptions struct {
2982	// placeholder for future optional parameters
2983}
2984
2985// AzureFirewallsGetOptions contains the optional parameters for the AzureFirewalls.Get method.
2986type AzureFirewallsGetOptions struct {
2987	// placeholder for future optional parameters
2988}
2989
2990// AzureFirewallsListAllOptions contains the optional parameters for the AzureFirewalls.ListAll method.
2991type AzureFirewallsListAllOptions struct {
2992	// placeholder for future optional parameters
2993}
2994
2995// AzureFirewallsListOptions contains the optional parameters for the AzureFirewalls.List method.
2996type AzureFirewallsListOptions struct {
2997	// placeholder for future optional parameters
2998}
2999
3000// AzureReachabilityReport - Azure reachability report details.
3001type AzureReachabilityReport struct {
3002	// REQUIRED; The aggregation level of Azure reachability report. Can be Country, State or City.
3003	AggregationLevel *string `json:"aggregationLevel,omitempty"`
3004
3005	// REQUIRED; Parameters that define a geographic location.
3006	ProviderLocation *AzureReachabilityReportLocation `json:"providerLocation,omitempty"`
3007
3008	// REQUIRED; List of Azure reachability report items.
3009	ReachabilityReport []*AzureReachabilityReportItem `json:"reachabilityReport,omitempty"`
3010}
3011
3012// MarshalJSON implements the json.Marshaller interface for type AzureReachabilityReport.
3013func (a AzureReachabilityReport) MarshalJSON() ([]byte, error) {
3014	objectMap := make(map[string]interface{})
3015	populate(objectMap, "aggregationLevel", a.AggregationLevel)
3016	populate(objectMap, "providerLocation", a.ProviderLocation)
3017	populate(objectMap, "reachabilityReport", a.ReachabilityReport)
3018	return json.Marshal(objectMap)
3019}
3020
3021// AzureReachabilityReportItem - Azure reachability report details for a given provider location.
3022type AzureReachabilityReportItem struct {
3023	// The Azure region.
3024	AzureLocation *string `json:"azureLocation,omitempty"`
3025
3026	// List of latency details for each of the time series.
3027	Latencies []*AzureReachabilityReportLatencyInfo `json:"latencies,omitempty"`
3028
3029	// The Internet service provider.
3030	Provider *string `json:"provider,omitempty"`
3031}
3032
3033// MarshalJSON implements the json.Marshaller interface for type AzureReachabilityReportItem.
3034func (a AzureReachabilityReportItem) MarshalJSON() ([]byte, error) {
3035	objectMap := make(map[string]interface{})
3036	populate(objectMap, "azureLocation", a.AzureLocation)
3037	populate(objectMap, "latencies", a.Latencies)
3038	populate(objectMap, "provider", a.Provider)
3039	return json.Marshal(objectMap)
3040}
3041
3042// AzureReachabilityReportLatencyInfo - Details on latency for a time series.
3043type AzureReachabilityReportLatencyInfo struct {
3044	// The relative latency score between 1 and 100, higher values indicating a faster connection.
3045	Score *int32 `json:"score,omitempty"`
3046
3047	// The time stamp.
3048	TimeStamp *time.Time `json:"timeStamp,omitempty"`
3049}
3050
3051// MarshalJSON implements the json.Marshaller interface for type AzureReachabilityReportLatencyInfo.
3052func (a AzureReachabilityReportLatencyInfo) MarshalJSON() ([]byte, error) {
3053	objectMap := make(map[string]interface{})
3054	populate(objectMap, "score", a.Score)
3055	populate(objectMap, "timeStamp", (*timeRFC3339)(a.TimeStamp))
3056	return json.Marshal(objectMap)
3057}
3058
3059// UnmarshalJSON implements the json.Unmarshaller interface for type AzureReachabilityReportLatencyInfo.
3060func (a *AzureReachabilityReportLatencyInfo) UnmarshalJSON(data []byte) error {
3061	var rawMsg map[string]json.RawMessage
3062	if err := json.Unmarshal(data, &rawMsg); err != nil {
3063		return err
3064	}
3065	for key, val := range rawMsg {
3066		var err error
3067		switch key {
3068		case "score":
3069			err = unpopulate(val, &a.Score)
3070			delete(rawMsg, key)
3071		case "timeStamp":
3072			var aux timeRFC3339
3073			err = unpopulate(val, &aux)
3074			a.TimeStamp = (*time.Time)(&aux)
3075			delete(rawMsg, key)
3076		}
3077		if err != nil {
3078			return err
3079		}
3080	}
3081	return nil
3082}
3083
3084// AzureReachabilityReportLocation - Parameters that define a geographic location.
3085type AzureReachabilityReportLocation struct {
3086	// REQUIRED; The name of the country.
3087	Country *string `json:"country,omitempty"`
3088
3089	// The name of the city or town.
3090	City *string `json:"city,omitempty"`
3091
3092	// The name of the state.
3093	State *string `json:"state,omitempty"`
3094}
3095
3096// AzureReachabilityReportParameters - Geographic and time constraints for Azure reachability report.
3097type AzureReachabilityReportParameters struct {
3098	// REQUIRED; The end time for the Azure reachability report.
3099	EndTime *time.Time `json:"endTime,omitempty"`
3100
3101	// REQUIRED; Parameters that define a geographic location.
3102	ProviderLocation *AzureReachabilityReportLocation `json:"providerLocation,omitempty"`
3103
3104	// REQUIRED; The start time for the Azure reachability report.
3105	StartTime *time.Time `json:"startTime,omitempty"`
3106
3107	// Optional Azure regions to scope the query to.
3108	AzureLocations []*string `json:"azureLocations,omitempty"`
3109
3110	// List of Internet service providers.
3111	Providers []*string `json:"providers,omitempty"`
3112}
3113
3114// MarshalJSON implements the json.Marshaller interface for type AzureReachabilityReportParameters.
3115func (a AzureReachabilityReportParameters) MarshalJSON() ([]byte, error) {
3116	objectMap := make(map[string]interface{})
3117	populate(objectMap, "azureLocations", a.AzureLocations)
3118	populate(objectMap, "endTime", (*timeRFC3339)(a.EndTime))
3119	populate(objectMap, "providerLocation", a.ProviderLocation)
3120	populate(objectMap, "providers", a.Providers)
3121	populate(objectMap, "startTime", (*timeRFC3339)(a.StartTime))
3122	return json.Marshal(objectMap)
3123}
3124
3125// UnmarshalJSON implements the json.Unmarshaller interface for type AzureReachabilityReportParameters.
3126func (a *AzureReachabilityReportParameters) UnmarshalJSON(data []byte) error {
3127	var rawMsg map[string]json.RawMessage
3128	if err := json.Unmarshal(data, &rawMsg); err != nil {
3129		return err
3130	}
3131	for key, val := range rawMsg {
3132		var err error
3133		switch key {
3134		case "azureLocations":
3135			err = unpopulate(val, &a.AzureLocations)
3136			delete(rawMsg, key)
3137		case "endTime":
3138			var aux timeRFC3339
3139			err = unpopulate(val, &aux)
3140			a.EndTime = (*time.Time)(&aux)
3141			delete(rawMsg, key)
3142		case "providerLocation":
3143			err = unpopulate(val, &a.ProviderLocation)
3144			delete(rawMsg, key)
3145		case "providers":
3146			err = unpopulate(val, &a.Providers)
3147			delete(rawMsg, key)
3148		case "startTime":
3149			var aux timeRFC3339
3150			err = unpopulate(val, &aux)
3151			a.StartTime = (*time.Time)(&aux)
3152			delete(rawMsg, key)
3153		}
3154		if err != nil {
3155			return err
3156		}
3157	}
3158	return nil
3159}
3160
3161// AzureWebCategory - Azure Web Category Resource.
3162type AzureWebCategory struct {
3163	// Resource ID.
3164	ID *string `json:"id,omitempty"`
3165
3166	// Properties of the Azure Web Category.
3167	Properties *AzureWebCategoryPropertiesFormat `json:"properties,omitempty"`
3168
3169	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
3170	Etag *string `json:"etag,omitempty" azure:"ro"`
3171
3172	// READ-ONLY; Resource name.
3173	Name *string `json:"name,omitempty" azure:"ro"`
3174
3175	// READ-ONLY; Resource type.
3176	Type *string `json:"type,omitempty" azure:"ro"`
3177}
3178
3179// AzureWebCategoryListResult - Response for ListAzureWebCategories API service call.
3180type AzureWebCategoryListResult struct {
3181	// URL to get the next set of results.
3182	NextLink *string `json:"nextLink,omitempty"`
3183
3184	// List of Azure Web Categories for a given Subscription.
3185	Value []*AzureWebCategory `json:"value,omitempty"`
3186}
3187
3188// MarshalJSON implements the json.Marshaller interface for type AzureWebCategoryListResult.
3189func (a AzureWebCategoryListResult) MarshalJSON() ([]byte, error) {
3190	objectMap := make(map[string]interface{})
3191	populate(objectMap, "nextLink", a.NextLink)
3192	populate(objectMap, "value", a.Value)
3193	return json.Marshal(objectMap)
3194}
3195
3196// AzureWebCategoryPropertiesFormat - Azure Web Category Properties.
3197type AzureWebCategoryPropertiesFormat struct {
3198	// READ-ONLY; The name of the group that the category belongs to.
3199	Group *string `json:"group,omitempty" azure:"ro"`
3200}
3201
3202// BGPCommunity - Contains bgp community information offered in Service Community resources.
3203type BGPCommunity struct {
3204	// The name of the bgp community. e.g. Skype.
3205	CommunityName *string `json:"communityName,omitempty"`
3206
3207	// The prefixes that the bgp community contains.
3208	CommunityPrefixes []*string `json:"communityPrefixes,omitempty"`
3209
3210	// The value of the bgp community. For more information: https://docs.microsoft.com/en-us/azure/expressroute/expressroute-routing.
3211	CommunityValue *string `json:"communityValue,omitempty"`
3212
3213	// Customer is authorized to use bgp community or not.
3214	IsAuthorizedToUse *bool `json:"isAuthorizedToUse,omitempty"`
3215
3216	// The service group of the bgp community contains.
3217	ServiceGroup *string `json:"serviceGroup,omitempty"`
3218
3219	// The region which the service support. e.g. For O365, region is Global.
3220	ServiceSupportedRegion *string `json:"serviceSupportedRegion,omitempty"`
3221}
3222
3223// MarshalJSON implements the json.Marshaller interface for type BGPCommunity.
3224func (b BGPCommunity) MarshalJSON() ([]byte, error) {
3225	objectMap := make(map[string]interface{})
3226	populate(objectMap, "communityName", b.CommunityName)
3227	populate(objectMap, "communityPrefixes", b.CommunityPrefixes)
3228	populate(objectMap, "communityValue", b.CommunityValue)
3229	populate(objectMap, "isAuthorizedToUse", b.IsAuthorizedToUse)
3230	populate(objectMap, "serviceGroup", b.ServiceGroup)
3231	populate(objectMap, "serviceSupportedRegion", b.ServiceSupportedRegion)
3232	return json.Marshal(objectMap)
3233}
3234
3235// BackendAddressPool - Pool of backend IP addresses.
3236type BackendAddressPool struct {
3237	SubResource
3238	// The name of the resource that is unique within the set of backend address pools used by the load balancer. This name can be used to access the resource.
3239	Name *string `json:"name,omitempty"`
3240
3241	// Properties of load balancer backend address pool.
3242	Properties *BackendAddressPoolPropertiesFormat `json:"properties,omitempty"`
3243
3244	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
3245	Etag *string `json:"etag,omitempty" azure:"ro"`
3246
3247	// READ-ONLY; Type of the resource.
3248	Type *string `json:"type,omitempty" azure:"ro"`
3249}
3250
3251// MarshalJSON implements the json.Marshaller interface for type BackendAddressPool.
3252func (b BackendAddressPool) MarshalJSON() ([]byte, error) {
3253	objectMap := b.SubResource.marshalInternal()
3254	populate(objectMap, "etag", b.Etag)
3255	populate(objectMap, "name", b.Name)
3256	populate(objectMap, "properties", b.Properties)
3257	populate(objectMap, "type", b.Type)
3258	return json.Marshal(objectMap)
3259}
3260
3261// BackendAddressPoolPropertiesFormat - Properties of the backend address pool.
3262type BackendAddressPoolPropertiesFormat struct {
3263	// An array of backend addresses.
3264	LoadBalancerBackendAddresses []*LoadBalancerBackendAddress `json:"loadBalancerBackendAddresses,omitempty"`
3265
3266	// The location of the backend address pool.
3267	Location *string `json:"location,omitempty"`
3268
3269	// An array of gateway load balancer tunnel interfaces.
3270	TunnelInterfaces []*GatewayLoadBalancerTunnelInterface `json:"tunnelInterfaces,omitempty"`
3271
3272	// READ-ONLY; An array of references to IP addresses defined in network interfaces.
3273	BackendIPConfigurations []*NetworkInterfaceIPConfiguration `json:"backendIPConfigurations,omitempty" azure:"ro"`
3274
3275	// READ-ONLY; An array of references to load balancing rules that use this backend address pool.
3276	LoadBalancingRules []*SubResource `json:"loadBalancingRules,omitempty" azure:"ro"`
3277
3278	// READ-ONLY; A reference to an outbound rule that uses this backend address pool.
3279	OutboundRule *SubResource `json:"outboundRule,omitempty" azure:"ro"`
3280
3281	// READ-ONLY; An array of references to outbound rules that use this backend address pool.
3282	OutboundRules []*SubResource `json:"outboundRules,omitempty" azure:"ro"`
3283
3284	// READ-ONLY; The provisioning state of the backend address pool resource.
3285	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
3286}
3287
3288// MarshalJSON implements the json.Marshaller interface for type BackendAddressPoolPropertiesFormat.
3289func (b BackendAddressPoolPropertiesFormat) MarshalJSON() ([]byte, error) {
3290	objectMap := make(map[string]interface{})
3291	populate(objectMap, "backendIPConfigurations", b.BackendIPConfigurations)
3292	populate(objectMap, "loadBalancerBackendAddresses", b.LoadBalancerBackendAddresses)
3293	populate(objectMap, "loadBalancingRules", b.LoadBalancingRules)
3294	populate(objectMap, "location", b.Location)
3295	populate(objectMap, "outboundRule", b.OutboundRule)
3296	populate(objectMap, "outboundRules", b.OutboundRules)
3297	populate(objectMap, "provisioningState", b.ProvisioningState)
3298	populate(objectMap, "tunnelInterfaces", b.TunnelInterfaces)
3299	return json.Marshal(objectMap)
3300}
3301
3302// BastionActiveSession - The session detail for a target.
3303type BastionActiveSession struct {
3304	// READ-ONLY; The protocol used to connect to the target.
3305	Protocol *BastionConnectProtocol `json:"protocol,omitempty" azure:"ro"`
3306
3307	// READ-ONLY; The type of the resource.
3308	ResourceType *string `json:"resourceType,omitempty" azure:"ro"`
3309
3310	// READ-ONLY; Duration in mins the session has been active.
3311	SessionDurationInMins *float32 `json:"sessionDurationInMins,omitempty" azure:"ro"`
3312
3313	// READ-ONLY; A unique id for the session.
3314	SessionID *string `json:"sessionId,omitempty" azure:"ro"`
3315
3316	// READ-ONLY; The time when the session started.
3317	StartTime map[string]interface{} `json:"startTime,omitempty" azure:"ro"`
3318
3319	// READ-ONLY; The host name of the target.
3320	TargetHostName *string `json:"targetHostName,omitempty" azure:"ro"`
3321
3322	// READ-ONLY; The IP Address of the target.
3323	TargetIPAddress *string `json:"targetIpAddress,omitempty" azure:"ro"`
3324
3325	// READ-ONLY; The resource group of the target.
3326	TargetResourceGroup *string `json:"targetResourceGroup,omitempty" azure:"ro"`
3327
3328	// READ-ONLY; The resource id of the target.
3329	TargetResourceID *string `json:"targetResourceId,omitempty" azure:"ro"`
3330
3331	// READ-ONLY; The subscription id for the target virtual machine.
3332	TargetSubscriptionID *string `json:"targetSubscriptionId,omitempty" azure:"ro"`
3333
3334	// READ-ONLY; The user name who is active on this session.
3335	UserName *string `json:"userName,omitempty" azure:"ro"`
3336}
3337
3338// BastionActiveSessionListResult - Response for GetActiveSessions.
3339type BastionActiveSessionListResult struct {
3340	// The URL to get the next set of results.
3341	NextLink *string `json:"nextLink,omitempty"`
3342
3343	// List of active sessions on the bastion.
3344	Value []*BastionActiveSession `json:"value,omitempty"`
3345}
3346
3347// MarshalJSON implements the json.Marshaller interface for type BastionActiveSessionListResult.
3348func (b BastionActiveSessionListResult) MarshalJSON() ([]byte, error) {
3349	objectMap := make(map[string]interface{})
3350	populate(objectMap, "nextLink", b.NextLink)
3351	populate(objectMap, "value", b.Value)
3352	return json.Marshal(objectMap)
3353}
3354
3355// BastionHost - Bastion Host resource.
3356type BastionHost struct {
3357	Resource
3358	// Represents the bastion host resource.
3359	Properties *BastionHostPropertiesFormat `json:"properties,omitempty"`
3360
3361	// The sku of this Bastion Host.
3362	SKU *SKU `json:"sku,omitempty"`
3363
3364	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
3365	Etag *string `json:"etag,omitempty" azure:"ro"`
3366}
3367
3368// MarshalJSON implements the json.Marshaller interface for type BastionHost.
3369func (b BastionHost) MarshalJSON() ([]byte, error) {
3370	objectMap := b.Resource.marshalInternal()
3371	populate(objectMap, "etag", b.Etag)
3372	populate(objectMap, "properties", b.Properties)
3373	populate(objectMap, "sku", b.SKU)
3374	return json.Marshal(objectMap)
3375}
3376
3377// BastionHostIPConfiguration - IP configuration of an Bastion Host.
3378type BastionHostIPConfiguration struct {
3379	SubResource
3380	// Name of the resource that is unique within a resource group. This name can be used to access the resource.
3381	Name *string `json:"name,omitempty"`
3382
3383	// Represents the ip configuration associated with the resource.
3384	Properties *BastionHostIPConfigurationPropertiesFormat `json:"properties,omitempty"`
3385
3386	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
3387	Etag *string `json:"etag,omitempty" azure:"ro"`
3388
3389	// READ-ONLY; Ip configuration type.
3390	Type *string `json:"type,omitempty" azure:"ro"`
3391}
3392
3393// MarshalJSON implements the json.Marshaller interface for type BastionHostIPConfiguration.
3394func (b BastionHostIPConfiguration) MarshalJSON() ([]byte, error) {
3395	objectMap := b.SubResource.marshalInternal()
3396	populate(objectMap, "etag", b.Etag)
3397	populate(objectMap, "name", b.Name)
3398	populate(objectMap, "properties", b.Properties)
3399	populate(objectMap, "type", b.Type)
3400	return json.Marshal(objectMap)
3401}
3402
3403// BastionHostIPConfigurationPropertiesFormat - Properties of IP configuration of an Bastion Host.
3404type BastionHostIPConfigurationPropertiesFormat struct {
3405	// REQUIRED; Reference of the PublicIP resource.
3406	PublicIPAddress *SubResource `json:"publicIPAddress,omitempty"`
3407
3408	// REQUIRED; Reference of the subnet resource.
3409	Subnet *SubResource `json:"subnet,omitempty"`
3410
3411	// Private IP allocation method.
3412	PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"`
3413
3414	// READ-ONLY; The provisioning state of the bastion host IP configuration resource.
3415	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
3416}
3417
3418// BastionHostListResult - Response for ListBastionHosts API service call.
3419type BastionHostListResult struct {
3420	// URL to get the next set of results.
3421	NextLink *string `json:"nextLink,omitempty"`
3422
3423	// List of Bastion Hosts in a resource group.
3424	Value []*BastionHost `json:"value,omitempty"`
3425}
3426
3427// MarshalJSON implements the json.Marshaller interface for type BastionHostListResult.
3428func (b BastionHostListResult) MarshalJSON() ([]byte, error) {
3429	objectMap := make(map[string]interface{})
3430	populate(objectMap, "nextLink", b.NextLink)
3431	populate(objectMap, "value", b.Value)
3432	return json.Marshal(objectMap)
3433}
3434
3435// BastionHostPropertiesFormat - Properties of the Bastion Host.
3436type BastionHostPropertiesFormat struct {
3437	// FQDN for the endpoint on which bastion host is accessible.
3438	DNSName *string `json:"dnsName,omitempty"`
3439
3440	// IP configuration of the Bastion Host resource.
3441	IPConfigurations []*BastionHostIPConfiguration `json:"ipConfigurations,omitempty"`
3442
3443	// READ-ONLY; The provisioning state of the bastion host resource.
3444	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
3445}
3446
3447// MarshalJSON implements the json.Marshaller interface for type BastionHostPropertiesFormat.
3448func (b BastionHostPropertiesFormat) MarshalJSON() ([]byte, error) {
3449	objectMap := make(map[string]interface{})
3450	populate(objectMap, "dnsName", b.DNSName)
3451	populate(objectMap, "ipConfigurations", b.IPConfigurations)
3452	populate(objectMap, "provisioningState", b.ProvisioningState)
3453	return json.Marshal(objectMap)
3454}
3455
3456// BastionHostsBeginCreateOrUpdateOptions contains the optional parameters for the BastionHosts.BeginCreateOrUpdate method.
3457type BastionHostsBeginCreateOrUpdateOptions struct {
3458	// placeholder for future optional parameters
3459}
3460
3461// BastionHostsBeginDeleteOptions contains the optional parameters for the BastionHosts.BeginDelete method.
3462type BastionHostsBeginDeleteOptions struct {
3463	// placeholder for future optional parameters
3464}
3465
3466// BastionHostsGetOptions contains the optional parameters for the BastionHosts.Get method.
3467type BastionHostsGetOptions struct {
3468	// placeholder for future optional parameters
3469}
3470
3471// BastionHostsListByResourceGroupOptions contains the optional parameters for the BastionHosts.ListByResourceGroup method.
3472type BastionHostsListByResourceGroupOptions struct {
3473	// placeholder for future optional parameters
3474}
3475
3476// BastionHostsListOptions contains the optional parameters for the BastionHosts.List method.
3477type BastionHostsListOptions struct {
3478	// placeholder for future optional parameters
3479}
3480
3481// BastionSessionDeleteResult - Response for DisconnectActiveSessions.
3482type BastionSessionDeleteResult struct {
3483	// The URL to get the next set of results.
3484	NextLink *string `json:"nextLink,omitempty"`
3485
3486	// List of sessions with their corresponding state.
3487	Value []*BastionSessionState `json:"value,omitempty"`
3488}
3489
3490// MarshalJSON implements the json.Marshaller interface for type BastionSessionDeleteResult.
3491func (b BastionSessionDeleteResult) MarshalJSON() ([]byte, error) {
3492	objectMap := make(map[string]interface{})
3493	populate(objectMap, "nextLink", b.NextLink)
3494	populate(objectMap, "value", b.Value)
3495	return json.Marshal(objectMap)
3496}
3497
3498// BastionSessionState - The session state detail for a target.
3499type BastionSessionState struct {
3500	// READ-ONLY; Used for extra information.
3501	Message *string `json:"message,omitempty" azure:"ro"`
3502
3503	// READ-ONLY; A unique id for the session.
3504	SessionID *string `json:"sessionId,omitempty" azure:"ro"`
3505
3506	// READ-ONLY; The state of the session. Disconnected/Failed/NotFound.
3507	State *string `json:"state,omitempty" azure:"ro"`
3508}
3509
3510// BastionShareableLink - Bastion Shareable Link.
3511type BastionShareableLink struct {
3512	// REQUIRED; Reference of the virtual machine resource.
3513	VM *VM `json:"vm,omitempty"`
3514
3515	// READ-ONLY; The unique Bastion Shareable Link to the virtual machine.
3516	Bsl *string `json:"bsl,omitempty" azure:"ro"`
3517
3518	// READ-ONLY; The time when the link was created.
3519	CreatedAt *string `json:"createdAt,omitempty" azure:"ro"`
3520
3521	// READ-ONLY; Optional field indicating the warning or error message related to the vm in case of partial failure.
3522	Message *string `json:"message,omitempty" azure:"ro"`
3523}
3524
3525// BastionShareableLinkListRequest - Post request for all the Bastion Shareable Link endpoints.
3526type BastionShareableLinkListRequest struct {
3527	// List of VM references.
3528	VMs []*BastionShareableLink `json:"vms,omitempty"`
3529}
3530
3531// MarshalJSON implements the json.Marshaller interface for type BastionShareableLinkListRequest.
3532func (b BastionShareableLinkListRequest) MarshalJSON() ([]byte, error) {
3533	objectMap := make(map[string]interface{})
3534	populate(objectMap, "vms", b.VMs)
3535	return json.Marshal(objectMap)
3536}
3537
3538// BastionShareableLinkListResult - Response for all the Bastion Shareable Link endpoints.
3539type BastionShareableLinkListResult struct {
3540	// The URL to get the next set of results.
3541	NextLink *string `json:"nextLink,omitempty"`
3542
3543	// List of Bastion Shareable Links for the request.
3544	Value []*BastionShareableLink `json:"value,omitempty"`
3545}
3546
3547// MarshalJSON implements the json.Marshaller interface for type BastionShareableLinkListResult.
3548func (b BastionShareableLinkListResult) MarshalJSON() ([]byte, error) {
3549	objectMap := make(map[string]interface{})
3550	populate(objectMap, "nextLink", b.NextLink)
3551	populate(objectMap, "value", b.Value)
3552	return json.Marshal(objectMap)
3553}
3554
3555// BgpConnection - Virtual Appliance Site resource.
3556type BgpConnection struct {
3557	SubResource
3558	// Name of the connection.
3559	Name *string `json:"name,omitempty"`
3560
3561	// The properties of the Bgp connections.
3562	Properties *BgpConnectionProperties `json:"properties,omitempty"`
3563
3564	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
3565	Etag *string `json:"etag,omitempty" azure:"ro"`
3566
3567	// READ-ONLY; Connection type.
3568	Type *string `json:"type,omitempty" azure:"ro"`
3569}
3570
3571// MarshalJSON implements the json.Marshaller interface for type BgpConnection.
3572func (b BgpConnection) MarshalJSON() ([]byte, error) {
3573	objectMap := b.SubResource.marshalInternal()
3574	populate(objectMap, "etag", b.Etag)
3575	populate(objectMap, "name", b.Name)
3576	populate(objectMap, "properties", b.Properties)
3577	populate(objectMap, "type", b.Type)
3578	return json.Marshal(objectMap)
3579}
3580
3581// BgpConnectionProperties - Properties of the bgp connection.
3582type BgpConnectionProperties struct {
3583	// Peer ASN.
3584	PeerAsn *int64 `json:"peerAsn,omitempty"`
3585
3586	// Peer IP.
3587	PeerIP *string `json:"peerIp,omitempty"`
3588
3589	// READ-ONLY; The current state of the VirtualHub to Peer.
3590	ConnectionState *HubBgpConnectionStatus `json:"connectionState,omitempty" azure:"ro"`
3591
3592	// READ-ONLY; The provisioning state of the resource.
3593	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
3594}
3595
3596// BgpPeerStatus - BGP peer status details.
3597type BgpPeerStatus struct {
3598	// READ-ONLY; The autonomous system number of the remote BGP peer.
3599	Asn *int64 `json:"asn,omitempty" azure:"ro"`
3600
3601	// READ-ONLY; For how long the peering has been up.
3602	ConnectedDuration *string `json:"connectedDuration,omitempty" azure:"ro"`
3603
3604	// READ-ONLY; The virtual network gateway's local address.
3605	LocalAddress *string `json:"localAddress,omitempty" azure:"ro"`
3606
3607	// READ-ONLY; The number of BGP messages received.
3608	MessagesReceived *int64 `json:"messagesReceived,omitempty" azure:"ro"`
3609
3610	// READ-ONLY; The number of BGP messages sent.
3611	MessagesSent *int64 `json:"messagesSent,omitempty" azure:"ro"`
3612
3613	// READ-ONLY; The remote BGP peer.
3614	Neighbor *string `json:"neighbor,omitempty" azure:"ro"`
3615
3616	// READ-ONLY; The number of routes learned from this peer.
3617	RoutesReceived *int64 `json:"routesReceived,omitempty" azure:"ro"`
3618
3619	// READ-ONLY; The BGP peer state.
3620	State *BgpPeerState `json:"state,omitempty" azure:"ro"`
3621}
3622
3623// BgpPeerStatusListResult - Response for list BGP peer status API service call.
3624type BgpPeerStatusListResult struct {
3625	// List of BGP peers.
3626	Value []*BgpPeerStatus `json:"value,omitempty"`
3627}
3628
3629// MarshalJSON implements the json.Marshaller interface for type BgpPeerStatusListResult.
3630func (b BgpPeerStatusListResult) MarshalJSON() ([]byte, error) {
3631	objectMap := make(map[string]interface{})
3632	populate(objectMap, "value", b.Value)
3633	return json.Marshal(objectMap)
3634}
3635
3636// BgpServiceCommunitiesListOptions contains the optional parameters for the BgpServiceCommunities.List method.
3637type BgpServiceCommunitiesListOptions struct {
3638	// placeholder for future optional parameters
3639}
3640
3641// BgpServiceCommunity - Service Community Properties.
3642type BgpServiceCommunity struct {
3643	Resource
3644	// Properties of the BGP service community.
3645	Properties *BgpServiceCommunityPropertiesFormat `json:"properties,omitempty"`
3646}
3647
3648// MarshalJSON implements the json.Marshaller interface for type BgpServiceCommunity.
3649func (b BgpServiceCommunity) MarshalJSON() ([]byte, error) {
3650	objectMap := b.Resource.marshalInternal()
3651	populate(objectMap, "properties", b.Properties)
3652	return json.Marshal(objectMap)
3653}
3654
3655// BgpServiceCommunityListResult - Response for the ListServiceCommunity API service call.
3656type BgpServiceCommunityListResult struct {
3657	// The URL to get the next set of results.
3658	NextLink *string `json:"nextLink,omitempty"`
3659
3660	// A list of service community resources.
3661	Value []*BgpServiceCommunity `json:"value,omitempty"`
3662}
3663
3664// MarshalJSON implements the json.Marshaller interface for type BgpServiceCommunityListResult.
3665func (b BgpServiceCommunityListResult) MarshalJSON() ([]byte, error) {
3666	objectMap := make(map[string]interface{})
3667	populate(objectMap, "nextLink", b.NextLink)
3668	populate(objectMap, "value", b.Value)
3669	return json.Marshal(objectMap)
3670}
3671
3672// BgpServiceCommunityPropertiesFormat - Properties of Service Community.
3673type BgpServiceCommunityPropertiesFormat struct {
3674	// A list of bgp communities.
3675	BgpCommunities []*BGPCommunity `json:"bgpCommunities,omitempty"`
3676
3677	// The name of the bgp community. e.g. Skype.
3678	ServiceName *string `json:"serviceName,omitempty"`
3679}
3680
3681// MarshalJSON implements the json.Marshaller interface for type BgpServiceCommunityPropertiesFormat.
3682func (b BgpServiceCommunityPropertiesFormat) MarshalJSON() ([]byte, error) {
3683	objectMap := make(map[string]interface{})
3684	populate(objectMap, "bgpCommunities", b.BgpCommunities)
3685	populate(objectMap, "serviceName", b.ServiceName)
3686	return json.Marshal(objectMap)
3687}
3688
3689// BgpSettings - BGP settings details.
3690type BgpSettings struct {
3691	// The BGP speaker's ASN.
3692	Asn *int64 `json:"asn,omitempty"`
3693
3694	// The BGP peering address and BGP identifier of this BGP speaker.
3695	BgpPeeringAddress *string `json:"bgpPeeringAddress,omitempty"`
3696
3697	// BGP peering address with IP configuration ID for virtual network gateway.
3698	BgpPeeringAddresses []*IPConfigurationBgpPeeringAddress `json:"bgpPeeringAddresses,omitempty"`
3699
3700	// The weight added to routes learned from this BGP speaker.
3701	PeerWeight *int32 `json:"peerWeight,omitempty"`
3702}
3703
3704// MarshalJSON implements the json.Marshaller interface for type BgpSettings.
3705func (b BgpSettings) MarshalJSON() ([]byte, error) {
3706	objectMap := make(map[string]interface{})
3707	populate(objectMap, "asn", b.Asn)
3708	populate(objectMap, "bgpPeeringAddress", b.BgpPeeringAddress)
3709	populate(objectMap, "bgpPeeringAddresses", b.BgpPeeringAddresses)
3710	populate(objectMap, "peerWeight", b.PeerWeight)
3711	return json.Marshal(objectMap)
3712}
3713
3714// BreakOutCategoryPolicies - Network Virtual Appliance Sku Properties.
3715type BreakOutCategoryPolicies struct {
3716	// Flag to control breakout of o365 allow category.
3717	Allow *bool `json:"allow,omitempty"`
3718
3719	// Flag to control breakout of o365 default category.
3720	Default *bool `json:"default,omitempty"`
3721
3722	// Flag to control breakout of o365 optimize category.
3723	Optimize *bool `json:"optimize,omitempty"`
3724}
3725
3726// CheckPrivateLinkServiceVisibilityRequest - Request body of the CheckPrivateLinkServiceVisibility API service call.
3727type CheckPrivateLinkServiceVisibilityRequest struct {
3728	// The alias of the private link service.
3729	PrivateLinkServiceAlias *string `json:"privateLinkServiceAlias,omitempty"`
3730}
3731
3732// CloudError - An error response from the service.
3733// Implements the error and azcore.HTTPResponse interfaces.
3734type CloudError struct {
3735	raw string
3736	// Cloud error body.
3737	InnerError *CloudErrorBody `json:"error,omitempty"`
3738}
3739
3740// Error implements the error interface for type CloudError.
3741// The contents of the error text are not contractual and subject to change.
3742func (e CloudError) Error() string {
3743	return e.raw
3744}
3745
3746// CloudErrorBody - An error response from the service.
3747type CloudErrorBody struct {
3748	// An identifier for the error. Codes are invariant and are intended to be consumed programmatically.
3749	Code *string `json:"code,omitempty"`
3750
3751	// A list of additional details about the error.
3752	Details []*CloudErrorBody `json:"details,omitempty"`
3753
3754	// A message describing the error, intended to be suitable for display in a user interface.
3755	Message *string `json:"message,omitempty"`
3756
3757	// The target of the particular error. For example, the name of the property in error.
3758	Target *string `json:"target,omitempty"`
3759}
3760
3761// MarshalJSON implements the json.Marshaller interface for type CloudErrorBody.
3762func (c CloudErrorBody) MarshalJSON() ([]byte, error) {
3763	objectMap := make(map[string]interface{})
3764	populate(objectMap, "code", c.Code)
3765	populate(objectMap, "details", c.Details)
3766	populate(objectMap, "message", c.Message)
3767	populate(objectMap, "target", c.Target)
3768	return json.Marshal(objectMap)
3769}
3770
3771type Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties struct {
3772	// READ-ONLY; The client id of user assigned identity.
3773	ClientID *string `json:"clientId,omitempty" azure:"ro"`
3774
3775	// READ-ONLY; The principal id of user assigned identity.
3776	PrincipalID *string `json:"principalId,omitempty" azure:"ro"`
3777}
3778
3779// ConnectionMonitor - Parameters that define the operation to create a connection monitor.
3780type ConnectionMonitor struct {
3781	// REQUIRED; Properties of the connection monitor.
3782	Properties *ConnectionMonitorParameters `json:"properties,omitempty"`
3783
3784	// Connection monitor location.
3785	Location *string `json:"location,omitempty"`
3786
3787	// Connection monitor tags.
3788	Tags map[string]*string `json:"tags,omitempty"`
3789}
3790
3791// MarshalJSON implements the json.Marshaller interface for type ConnectionMonitor.
3792func (c ConnectionMonitor) MarshalJSON() ([]byte, error) {
3793	objectMap := make(map[string]interface{})
3794	populate(objectMap, "location", c.Location)
3795	populate(objectMap, "properties", c.Properties)
3796	populate(objectMap, "tags", c.Tags)
3797	return json.Marshal(objectMap)
3798}
3799
3800// ConnectionMonitorDestination - Describes the destination of connection monitor.
3801type ConnectionMonitorDestination struct {
3802	// Address of the connection monitor destination (IP or domain name).
3803	Address *string `json:"address,omitempty"`
3804
3805	// The destination port used by connection monitor.
3806	Port *int32 `json:"port,omitempty"`
3807
3808	// The ID of the resource used as the destination by connection monitor.
3809	ResourceID *string `json:"resourceId,omitempty"`
3810}
3811
3812// ConnectionMonitorEndpoint - Describes the connection monitor endpoint.
3813type ConnectionMonitorEndpoint struct {
3814	// REQUIRED; The name of the connection monitor endpoint.
3815	Name *string `json:"name,omitempty"`
3816
3817	// Address of the connection monitor endpoint (IP or domain name).
3818	Address *string `json:"address,omitempty"`
3819
3820	// Test coverage for the endpoint.
3821	CoverageLevel *CoverageLevel `json:"coverageLevel,omitempty"`
3822
3823	// Filter for sub-items within the endpoint.
3824	Filter *ConnectionMonitorEndpointFilter `json:"filter,omitempty"`
3825
3826	// Resource ID of the connection monitor endpoint.
3827	ResourceID *string `json:"resourceId,omitempty"`
3828
3829	// Endpoint scope.
3830	Scope *ConnectionMonitorEndpointScope `json:"scope,omitempty"`
3831
3832	// The endpoint type.
3833	Type *EndpointType `json:"type,omitempty"`
3834}
3835
3836// ConnectionMonitorEndpointFilter - Describes the connection monitor endpoint filter.
3837type ConnectionMonitorEndpointFilter struct {
3838	// List of items in the filter.
3839	Items []*ConnectionMonitorEndpointFilterItem `json:"items,omitempty"`
3840
3841	// The behavior of the endpoint filter. Currently only 'Include' is supported.
3842	Type *ConnectionMonitorEndpointFilterType `json:"type,omitempty"`
3843}
3844
3845// MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorEndpointFilter.
3846func (c ConnectionMonitorEndpointFilter) MarshalJSON() ([]byte, error) {
3847	objectMap := make(map[string]interface{})
3848	populate(objectMap, "items", c.Items)
3849	populate(objectMap, "type", c.Type)
3850	return json.Marshal(objectMap)
3851}
3852
3853// ConnectionMonitorEndpointFilterItem - Describes the connection monitor endpoint filter item.
3854type ConnectionMonitorEndpointFilterItem struct {
3855	// The address of the filter item.
3856	Address *string `json:"address,omitempty"`
3857
3858	// The type of item included in the filter. Currently only 'AgentAddress' is supported.
3859	Type *ConnectionMonitorEndpointFilterItemType `json:"type,omitempty"`
3860}
3861
3862// ConnectionMonitorEndpointScope - Describes the connection monitor endpoint scope.
3863type ConnectionMonitorEndpointScope struct {
3864	// List of items which needs to be excluded from the endpoint scope.
3865	Exclude []*ConnectionMonitorEndpointScopeItem `json:"exclude,omitempty"`
3866
3867	// List of items which needs to be included to the endpoint scope.
3868	Include []*ConnectionMonitorEndpointScopeItem `json:"include,omitempty"`
3869}
3870
3871// MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorEndpointScope.
3872func (c ConnectionMonitorEndpointScope) MarshalJSON() ([]byte, error) {
3873	objectMap := make(map[string]interface{})
3874	populate(objectMap, "exclude", c.Exclude)
3875	populate(objectMap, "include", c.Include)
3876	return json.Marshal(objectMap)
3877}
3878
3879// ConnectionMonitorEndpointScopeItem - Describes the connection monitor endpoint scope item.
3880type ConnectionMonitorEndpointScopeItem struct {
3881	// The address of the endpoint item. Supported types are IPv4/IPv6 subnet mask or IPv4/IPv6 IP address.
3882	Address *string `json:"address,omitempty"`
3883}
3884
3885// ConnectionMonitorHTTPConfiguration - Describes the HTTP configuration.
3886type ConnectionMonitorHTTPConfiguration struct {
3887	// The HTTP method to use.
3888	Method *HTTPConfigurationMethod `json:"method,omitempty"`
3889
3890	// The path component of the URI. For instance, "/dir1/dir2".
3891	Path *string `json:"path,omitempty"`
3892
3893	// The port to connect to.
3894	Port *int32 `json:"port,omitempty"`
3895
3896	// Value indicating whether HTTPS is preferred over HTTP in cases where the choice is not explicit.
3897	PreferHTTPS *bool `json:"preferHTTPS,omitempty"`
3898
3899	// The HTTP headers to transmit with the request.
3900	RequestHeaders []*HTTPHeader `json:"requestHeaders,omitempty"`
3901
3902	// HTTP status codes to consider successful. For instance, "2xx,301-304,418".
3903	ValidStatusCodeRanges []*string `json:"validStatusCodeRanges,omitempty"`
3904}
3905
3906// MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorHTTPConfiguration.
3907func (c ConnectionMonitorHTTPConfiguration) MarshalJSON() ([]byte, error) {
3908	objectMap := make(map[string]interface{})
3909	populate(objectMap, "method", c.Method)
3910	populate(objectMap, "path", c.Path)
3911	populate(objectMap, "port", c.Port)
3912	populate(objectMap, "preferHTTPS", c.PreferHTTPS)
3913	populate(objectMap, "requestHeaders", c.RequestHeaders)
3914	populate(objectMap, "validStatusCodeRanges", c.ValidStatusCodeRanges)
3915	return json.Marshal(objectMap)
3916}
3917
3918// ConnectionMonitorIcmpConfiguration - Describes the ICMP configuration.
3919type ConnectionMonitorIcmpConfiguration struct {
3920	// Value indicating whether path evaluation with trace route should be disabled.
3921	DisableTraceRoute *bool `json:"disableTraceRoute,omitempty"`
3922}
3923
3924// ConnectionMonitorListResult - List of connection monitors.
3925type ConnectionMonitorListResult struct {
3926	// Information about connection monitors.
3927	Value []*ConnectionMonitorResult `json:"value,omitempty"`
3928}
3929
3930// MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorListResult.
3931func (c ConnectionMonitorListResult) MarshalJSON() ([]byte, error) {
3932	objectMap := make(map[string]interface{})
3933	populate(objectMap, "value", c.Value)
3934	return json.Marshal(objectMap)
3935}
3936
3937// ConnectionMonitorOutput - Describes a connection monitor output destination.
3938type ConnectionMonitorOutput struct {
3939	// Connection monitor output destination type. Currently, only "Workspace" is supported.
3940	Type *OutputType `json:"type,omitempty"`
3941
3942	// Describes the settings for producing output into a log analytics workspace.
3943	WorkspaceSettings *ConnectionMonitorWorkspaceSettings `json:"workspaceSettings,omitempty"`
3944}
3945
3946// ConnectionMonitorParameters - Parameters that define the operation to create a connection monitor.
3947type ConnectionMonitorParameters struct {
3948	// Determines if the connection monitor will start automatically once created.
3949	AutoStart *bool `json:"autoStart,omitempty"`
3950
3951	// Describes the destination of connection monitor.
3952	Destination *ConnectionMonitorDestination `json:"destination,omitempty"`
3953
3954	// List of connection monitor endpoints.
3955	Endpoints []*ConnectionMonitorEndpoint `json:"endpoints,omitempty"`
3956
3957	// Monitoring interval in seconds.
3958	MonitoringIntervalInSeconds *int32 `json:"monitoringIntervalInSeconds,omitempty"`
3959
3960	// Optional notes to be associated with the connection monitor.
3961	Notes *string `json:"notes,omitempty"`
3962
3963	// List of connection monitor outputs.
3964	Outputs []*ConnectionMonitorOutput `json:"outputs,omitempty"`
3965
3966	// Describes the source of connection monitor.
3967	Source *ConnectionMonitorSource `json:"source,omitempty"`
3968
3969	// List of connection monitor test configurations.
3970	TestConfigurations []*ConnectionMonitorTestConfiguration `json:"testConfigurations,omitempty"`
3971
3972	// List of connection monitor test groups.
3973	TestGroups []*ConnectionMonitorTestGroup `json:"testGroups,omitempty"`
3974}
3975
3976// MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorParameters.
3977func (c ConnectionMonitorParameters) MarshalJSON() ([]byte, error) {
3978	objectMap := c.marshalInternal()
3979	return json.Marshal(objectMap)
3980}
3981
3982// UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorParameters.
3983func (c *ConnectionMonitorParameters) UnmarshalJSON(data []byte) error {
3984	var rawMsg map[string]json.RawMessage
3985	if err := json.Unmarshal(data, &rawMsg); err != nil {
3986		return err
3987	}
3988	return c.unmarshalInternal(rawMsg)
3989}
3990
3991func (c ConnectionMonitorParameters) marshalInternal() map[string]interface{} {
3992	objectMap := make(map[string]interface{})
3993	populate(objectMap, "autoStart", c.AutoStart)
3994	populate(objectMap, "destination", c.Destination)
3995	populate(objectMap, "endpoints", c.Endpoints)
3996	populate(objectMap, "monitoringIntervalInSeconds", c.MonitoringIntervalInSeconds)
3997	populate(objectMap, "notes", c.Notes)
3998	populate(objectMap, "outputs", c.Outputs)
3999	populate(objectMap, "source", c.Source)
4000	populate(objectMap, "testConfigurations", c.TestConfigurations)
4001	populate(objectMap, "testGroups", c.TestGroups)
4002	return objectMap
4003}
4004
4005func (c *ConnectionMonitorParameters) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
4006	for key, val := range rawMsg {
4007		var err error
4008		switch key {
4009		case "autoStart":
4010			err = unpopulate(val, &c.AutoStart)
4011			delete(rawMsg, key)
4012		case "destination":
4013			err = unpopulate(val, &c.Destination)
4014			delete(rawMsg, key)
4015		case "endpoints":
4016			err = unpopulate(val, &c.Endpoints)
4017			delete(rawMsg, key)
4018		case "monitoringIntervalInSeconds":
4019			err = unpopulate(val, &c.MonitoringIntervalInSeconds)
4020			delete(rawMsg, key)
4021		case "notes":
4022			err = unpopulate(val, &c.Notes)
4023			delete(rawMsg, key)
4024		case "outputs":
4025			err = unpopulate(val, &c.Outputs)
4026			delete(rawMsg, key)
4027		case "source":
4028			err = unpopulate(val, &c.Source)
4029			delete(rawMsg, key)
4030		case "testConfigurations":
4031			err = unpopulate(val, &c.TestConfigurations)
4032			delete(rawMsg, key)
4033		case "testGroups":
4034			err = unpopulate(val, &c.TestGroups)
4035			delete(rawMsg, key)
4036		}
4037		if err != nil {
4038			return err
4039		}
4040	}
4041	return nil
4042}
4043
4044// ConnectionMonitorQueryResult - List of connection states snapshots.
4045type ConnectionMonitorQueryResult struct {
4046	// Status of connection monitor source.
4047	SourceStatus *ConnectionMonitorSourceStatus `json:"sourceStatus,omitempty"`
4048
4049	// Information about connection states.
4050	States []*ConnectionStateSnapshot `json:"states,omitempty"`
4051}
4052
4053// MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorQueryResult.
4054func (c ConnectionMonitorQueryResult) MarshalJSON() ([]byte, error) {
4055	objectMap := make(map[string]interface{})
4056	populate(objectMap, "sourceStatus", c.SourceStatus)
4057	populate(objectMap, "states", c.States)
4058	return json.Marshal(objectMap)
4059}
4060
4061// ConnectionMonitorResult - Information about the connection monitor.
4062type ConnectionMonitorResult struct {
4063	// Connection monitor location.
4064	Location *string `json:"location,omitempty"`
4065
4066	// Properties of the connection monitor result.
4067	Properties *ConnectionMonitorResultProperties `json:"properties,omitempty"`
4068
4069	// Connection monitor tags.
4070	Tags map[string]*string `json:"tags,omitempty"`
4071
4072	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
4073	Etag *string `json:"etag,omitempty" azure:"ro"`
4074
4075	// READ-ONLY; ID of the connection monitor.
4076	ID *string `json:"id,omitempty" azure:"ro"`
4077
4078	// READ-ONLY; Name of the connection monitor.
4079	Name *string `json:"name,omitempty" azure:"ro"`
4080
4081	// READ-ONLY; Connection monitor type.
4082	Type *string `json:"type,omitempty" azure:"ro"`
4083}
4084
4085// MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorResult.
4086func (c ConnectionMonitorResult) MarshalJSON() ([]byte, error) {
4087	objectMap := make(map[string]interface{})
4088	populate(objectMap, "etag", c.Etag)
4089	populate(objectMap, "id", c.ID)
4090	populate(objectMap, "location", c.Location)
4091	populate(objectMap, "name", c.Name)
4092	populate(objectMap, "properties", c.Properties)
4093	populate(objectMap, "tags", c.Tags)
4094	populate(objectMap, "type", c.Type)
4095	return json.Marshal(objectMap)
4096}
4097
4098// ConnectionMonitorResultProperties - Describes the properties of a connection monitor.
4099type ConnectionMonitorResultProperties struct {
4100	ConnectionMonitorParameters
4101	// READ-ONLY; Type of connection monitor.
4102	ConnectionMonitorType *ConnectionMonitorType `json:"connectionMonitorType,omitempty" azure:"ro"`
4103
4104	// READ-ONLY; The monitoring status of the connection monitor.
4105	MonitoringStatus *string `json:"monitoringStatus,omitempty" azure:"ro"`
4106
4107	// READ-ONLY; The provisioning state of the connection monitor.
4108	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
4109
4110	// READ-ONLY; The date and time when the connection monitor was started.
4111	StartTime *time.Time `json:"startTime,omitempty" azure:"ro"`
4112}
4113
4114// MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorResultProperties.
4115func (c ConnectionMonitorResultProperties) MarshalJSON() ([]byte, error) {
4116	objectMap := c.ConnectionMonitorParameters.marshalInternal()
4117	populate(objectMap, "connectionMonitorType", c.ConnectionMonitorType)
4118	populate(objectMap, "monitoringStatus", c.MonitoringStatus)
4119	populate(objectMap, "provisioningState", c.ProvisioningState)
4120	populate(objectMap, "startTime", (*timeRFC3339)(c.StartTime))
4121	return json.Marshal(objectMap)
4122}
4123
4124// UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionMonitorResultProperties.
4125func (c *ConnectionMonitorResultProperties) UnmarshalJSON(data []byte) error {
4126	var rawMsg map[string]json.RawMessage
4127	if err := json.Unmarshal(data, &rawMsg); err != nil {
4128		return err
4129	}
4130	for key, val := range rawMsg {
4131		var err error
4132		switch key {
4133		case "connectionMonitorType":
4134			err = unpopulate(val, &c.ConnectionMonitorType)
4135			delete(rawMsg, key)
4136		case "monitoringStatus":
4137			err = unpopulate(val, &c.MonitoringStatus)
4138			delete(rawMsg, key)
4139		case "provisioningState":
4140			err = unpopulate(val, &c.ProvisioningState)
4141			delete(rawMsg, key)
4142		case "startTime":
4143			var aux timeRFC3339
4144			err = unpopulate(val, &aux)
4145			c.StartTime = (*time.Time)(&aux)
4146			delete(rawMsg, key)
4147		}
4148		if err != nil {
4149			return err
4150		}
4151	}
4152	return c.ConnectionMonitorParameters.unmarshalInternal(rawMsg)
4153}
4154
4155// ConnectionMonitorSource - Describes the source of connection monitor.
4156type ConnectionMonitorSource struct {
4157	// REQUIRED; The ID of the resource used as the source by connection monitor.
4158	ResourceID *string `json:"resourceId,omitempty"`
4159
4160	// The source port used by connection monitor.
4161	Port *int32 `json:"port,omitempty"`
4162}
4163
4164// ConnectionMonitorSuccessThreshold - Describes the threshold for declaring a test successful.
4165type ConnectionMonitorSuccessThreshold struct {
4166	// The maximum percentage of failed checks permitted for a test to evaluate as successful.
4167	ChecksFailedPercent *int32 `json:"checksFailedPercent,omitempty"`
4168
4169	// The maximum round-trip time in milliseconds permitted for a test to evaluate as successful.
4170	RoundTripTimeMs *float32 `json:"roundTripTimeMs,omitempty"`
4171}
4172
4173// ConnectionMonitorTCPConfiguration - Describes the TCP configuration.
4174type ConnectionMonitorTCPConfiguration struct {
4175	// Destination port behavior.
4176	DestinationPortBehavior *DestinationPortBehavior `json:"destinationPortBehavior,omitempty"`
4177
4178	// Value indicating whether path evaluation with trace route should be disabled.
4179	DisableTraceRoute *bool `json:"disableTraceRoute,omitempty"`
4180
4181	// The port to connect to.
4182	Port *int32 `json:"port,omitempty"`
4183}
4184
4185// ConnectionMonitorTestConfiguration - Describes a connection monitor test configuration.
4186type ConnectionMonitorTestConfiguration struct {
4187	// REQUIRED; The name of the connection monitor test configuration.
4188	Name *string `json:"name,omitempty"`
4189
4190	// REQUIRED; The protocol to use in test evaluation.
4191	Protocol *ConnectionMonitorTestConfigurationProtocol `json:"protocol,omitempty"`
4192
4193	// The parameters used to perform test evaluation over HTTP.
4194	HTTPConfiguration *ConnectionMonitorHTTPConfiguration `json:"httpConfiguration,omitempty"`
4195
4196	// The parameters used to perform test evaluation over ICMP.
4197	IcmpConfiguration *ConnectionMonitorIcmpConfiguration `json:"icmpConfiguration,omitempty"`
4198
4199	// The preferred IP version to use in test evaluation. The connection monitor may choose to use a different version depending on other parameters.
4200	PreferredIPVersion *PreferredIPVersion `json:"preferredIPVersion,omitempty"`
4201
4202	// The threshold for declaring a test successful.
4203	SuccessThreshold *ConnectionMonitorSuccessThreshold `json:"successThreshold,omitempty"`
4204
4205	// The parameters used to perform test evaluation over TCP.
4206	TCPConfiguration *ConnectionMonitorTCPConfiguration `json:"tcpConfiguration,omitempty"`
4207
4208	// The frequency of test evaluation, in seconds.
4209	TestFrequencySec *int32 `json:"testFrequencySec,omitempty"`
4210}
4211
4212// ConnectionMonitorTestGroup - Describes the connection monitor test group.
4213type ConnectionMonitorTestGroup struct {
4214	// REQUIRED; List of destination endpoint names.
4215	Destinations []*string `json:"destinations,omitempty"`
4216
4217	// REQUIRED; The name of the connection monitor test group.
4218	Name *string `json:"name,omitempty"`
4219
4220	// REQUIRED; List of source endpoint names.
4221	Sources []*string `json:"sources,omitempty"`
4222
4223	// REQUIRED; List of test configuration names.
4224	TestConfigurations []*string `json:"testConfigurations,omitempty"`
4225
4226	// Value indicating whether test group is disabled.
4227	Disable *bool `json:"disable,omitempty"`
4228}
4229
4230// MarshalJSON implements the json.Marshaller interface for type ConnectionMonitorTestGroup.
4231func (c ConnectionMonitorTestGroup) MarshalJSON() ([]byte, error) {
4232	objectMap := make(map[string]interface{})
4233	populate(objectMap, "destinations", c.Destinations)
4234	populate(objectMap, "disable", c.Disable)
4235	populate(objectMap, "name", c.Name)
4236	populate(objectMap, "sources", c.Sources)
4237	populate(objectMap, "testConfigurations", c.TestConfigurations)
4238	return json.Marshal(objectMap)
4239}
4240
4241// ConnectionMonitorWorkspaceSettings - Describes the settings for producing output into a log analytics workspace.
4242type ConnectionMonitorWorkspaceSettings struct {
4243	// Log analytics workspace resource ID.
4244	WorkspaceResourceID *string `json:"workspaceResourceId,omitempty"`
4245}
4246
4247// ConnectionMonitorsBeginCreateOrUpdateOptions contains the optional parameters for the ConnectionMonitors.BeginCreateOrUpdate method.
4248type ConnectionMonitorsBeginCreateOrUpdateOptions struct {
4249	// Value indicating whether connection monitor V1 should be migrated to V2 format.
4250	Migrate *string
4251}
4252
4253// ConnectionMonitorsBeginDeleteOptions contains the optional parameters for the ConnectionMonitors.BeginDelete method.
4254type ConnectionMonitorsBeginDeleteOptions struct {
4255	// placeholder for future optional parameters
4256}
4257
4258// ConnectionMonitorsBeginQueryOptions contains the optional parameters for the ConnectionMonitors.BeginQuery method.
4259type ConnectionMonitorsBeginQueryOptions struct {
4260	// placeholder for future optional parameters
4261}
4262
4263// ConnectionMonitorsBeginStartOptions contains the optional parameters for the ConnectionMonitors.BeginStart method.
4264type ConnectionMonitorsBeginStartOptions struct {
4265	// placeholder for future optional parameters
4266}
4267
4268// ConnectionMonitorsBeginStopOptions contains the optional parameters for the ConnectionMonitors.BeginStop method.
4269type ConnectionMonitorsBeginStopOptions struct {
4270	// placeholder for future optional parameters
4271}
4272
4273// ConnectionMonitorsGetOptions contains the optional parameters for the ConnectionMonitors.Get method.
4274type ConnectionMonitorsGetOptions struct {
4275	// placeholder for future optional parameters
4276}
4277
4278// ConnectionMonitorsListOptions contains the optional parameters for the ConnectionMonitors.List method.
4279type ConnectionMonitorsListOptions struct {
4280	// placeholder for future optional parameters
4281}
4282
4283// ConnectionMonitorsUpdateTagsOptions contains the optional parameters for the ConnectionMonitors.UpdateTags method.
4284type ConnectionMonitorsUpdateTagsOptions struct {
4285	// placeholder for future optional parameters
4286}
4287
4288// ConnectionResetSharedKey - The virtual network connection reset shared key.
4289type ConnectionResetSharedKey struct {
4290	// REQUIRED; The virtual network connection reset shared key length, should between 1 and 128.
4291	KeyLength *int32 `json:"keyLength,omitempty"`
4292}
4293
4294// ConnectionSharedKey - Response for GetConnectionSharedKey API service call.
4295type ConnectionSharedKey struct {
4296	SubResource
4297	// REQUIRED; The virtual network connection shared key value.
4298	Value *string `json:"value,omitempty"`
4299}
4300
4301// MarshalJSON implements the json.Marshaller interface for type ConnectionSharedKey.
4302func (c ConnectionSharedKey) MarshalJSON() ([]byte, error) {
4303	objectMap := c.SubResource.marshalInternal()
4304	populate(objectMap, "value", c.Value)
4305	return json.Marshal(objectMap)
4306}
4307
4308// ConnectionStateSnapshot - Connection state snapshot.
4309type ConnectionStateSnapshot struct {
4310	// Average latency in ms.
4311	AvgLatencyInMs *int64 `json:"avgLatencyInMs,omitempty"`
4312
4313	// The connection state.
4314	ConnectionState *ConnectionState `json:"connectionState,omitempty"`
4315
4316	// The end time of the connection snapshot.
4317	EndTime *time.Time `json:"endTime,omitempty"`
4318
4319	// Connectivity analysis evaluation state.
4320	EvaluationState *EvaluationState `json:"evaluationState,omitempty"`
4321
4322	// Maximum latency in ms.
4323	MaxLatencyInMs *int64 `json:"maxLatencyInMs,omitempty"`
4324
4325	// Minimum latency in ms.
4326	MinLatencyInMs *int64 `json:"minLatencyInMs,omitempty"`
4327
4328	// The number of failed probes.
4329	ProbesFailed *int64 `json:"probesFailed,omitempty"`
4330
4331	// The number of sent probes.
4332	ProbesSent *int64 `json:"probesSent,omitempty"`
4333
4334	// The start time of the connection snapshot.
4335	StartTime *time.Time `json:"startTime,omitempty"`
4336
4337	// READ-ONLY; List of hops between the source and the destination.
4338	Hops []*ConnectivityHop `json:"hops,omitempty" azure:"ro"`
4339}
4340
4341// MarshalJSON implements the json.Marshaller interface for type ConnectionStateSnapshot.
4342func (c ConnectionStateSnapshot) MarshalJSON() ([]byte, error) {
4343	objectMap := make(map[string]interface{})
4344	populate(objectMap, "avgLatencyInMs", c.AvgLatencyInMs)
4345	populate(objectMap, "connectionState", c.ConnectionState)
4346	populate(objectMap, "endTime", (*timeRFC3339)(c.EndTime))
4347	populate(objectMap, "evaluationState", c.EvaluationState)
4348	populate(objectMap, "hops", c.Hops)
4349	populate(objectMap, "maxLatencyInMs", c.MaxLatencyInMs)
4350	populate(objectMap, "minLatencyInMs", c.MinLatencyInMs)
4351	populate(objectMap, "probesFailed", c.ProbesFailed)
4352	populate(objectMap, "probesSent", c.ProbesSent)
4353	populate(objectMap, "startTime", (*timeRFC3339)(c.StartTime))
4354	return json.Marshal(objectMap)
4355}
4356
4357// UnmarshalJSON implements the json.Unmarshaller interface for type ConnectionStateSnapshot.
4358func (c *ConnectionStateSnapshot) UnmarshalJSON(data []byte) error {
4359	var rawMsg map[string]json.RawMessage
4360	if err := json.Unmarshal(data, &rawMsg); err != nil {
4361		return err
4362	}
4363	for key, val := range rawMsg {
4364		var err error
4365		switch key {
4366		case "avgLatencyInMs":
4367			err = unpopulate(val, &c.AvgLatencyInMs)
4368			delete(rawMsg, key)
4369		case "connectionState":
4370			err = unpopulate(val, &c.ConnectionState)
4371			delete(rawMsg, key)
4372		case "endTime":
4373			var aux timeRFC3339
4374			err = unpopulate(val, &aux)
4375			c.EndTime = (*time.Time)(&aux)
4376			delete(rawMsg, key)
4377		case "evaluationState":
4378			err = unpopulate(val, &c.EvaluationState)
4379			delete(rawMsg, key)
4380		case "hops":
4381			err = unpopulate(val, &c.Hops)
4382			delete(rawMsg, key)
4383		case "maxLatencyInMs":
4384			err = unpopulate(val, &c.MaxLatencyInMs)
4385			delete(rawMsg, key)
4386		case "minLatencyInMs":
4387			err = unpopulate(val, &c.MinLatencyInMs)
4388			delete(rawMsg, key)
4389		case "probesFailed":
4390			err = unpopulate(val, &c.ProbesFailed)
4391			delete(rawMsg, key)
4392		case "probesSent":
4393			err = unpopulate(val, &c.ProbesSent)
4394			delete(rawMsg, key)
4395		case "startTime":
4396			var aux timeRFC3339
4397			err = unpopulate(val, &aux)
4398			c.StartTime = (*time.Time)(&aux)
4399			delete(rawMsg, key)
4400		}
4401		if err != nil {
4402			return err
4403		}
4404	}
4405	return nil
4406}
4407
4408// ConnectivityDestination - Parameters that define destination of connection.
4409type ConnectivityDestination struct {
4410	// The IP address or URI the resource to which a connection attempt will be made.
4411	Address *string `json:"address,omitempty"`
4412
4413	// Port on which check connectivity will be performed.
4414	Port *int32 `json:"port,omitempty"`
4415
4416	// The ID of the resource to which a connection attempt will be made.
4417	ResourceID *string `json:"resourceId,omitempty"`
4418}
4419
4420// ConnectivityHop - Information about a hop between the source and the destination.
4421type ConnectivityHop struct {
4422	// READ-ONLY; The IP address of the hop.
4423	Address *string `json:"address,omitempty" azure:"ro"`
4424
4425	// READ-ONLY; The ID of the hop.
4426	ID *string `json:"id,omitempty" azure:"ro"`
4427
4428	// READ-ONLY; List of issues.
4429	Issues []*ConnectivityIssue `json:"issues,omitempty" azure:"ro"`
4430
4431	// READ-ONLY; List of hop links.
4432	Links []*HopLink `json:"links,omitempty" azure:"ro"`
4433
4434	// READ-ONLY; List of next hop identifiers.
4435	NextHopIDs []*string `json:"nextHopIds,omitempty" azure:"ro"`
4436
4437	// READ-ONLY; List of previous hop identifiers.
4438	PreviousHopIDs []*string `json:"previousHopIds,omitempty" azure:"ro"`
4439
4440	// READ-ONLY; List of previous hop links.
4441	PreviousLinks []*HopLink `json:"previousLinks,omitempty" azure:"ro"`
4442
4443	// READ-ONLY; The ID of the resource corresponding to this hop.
4444	ResourceID *string `json:"resourceId,omitempty" azure:"ro"`
4445
4446	// READ-ONLY; The type of the hop.
4447	Type *string `json:"type,omitempty" azure:"ro"`
4448}
4449
4450// MarshalJSON implements the json.Marshaller interface for type ConnectivityHop.
4451func (c ConnectivityHop) MarshalJSON() ([]byte, error) {
4452	objectMap := make(map[string]interface{})
4453	populate(objectMap, "address", c.Address)
4454	populate(objectMap, "id", c.ID)
4455	populate(objectMap, "issues", c.Issues)
4456	populate(objectMap, "links", c.Links)
4457	populate(objectMap, "nextHopIds", c.NextHopIDs)
4458	populate(objectMap, "previousHopIds", c.PreviousHopIDs)
4459	populate(objectMap, "previousLinks", c.PreviousLinks)
4460	populate(objectMap, "resourceId", c.ResourceID)
4461	populate(objectMap, "type", c.Type)
4462	return json.Marshal(objectMap)
4463}
4464
4465// ConnectivityInformation - Information on the connectivity status.
4466type ConnectivityInformation struct {
4467	// READ-ONLY; Average latency in milliseconds.
4468	AvgLatencyInMs *int32 `json:"avgLatencyInMs,omitempty" azure:"ro"`
4469
4470	// READ-ONLY; The connection status.
4471	ConnectionStatus *ConnectionStatus `json:"connectionStatus,omitempty" azure:"ro"`
4472
4473	// READ-ONLY; List of hops between the source and the destination.
4474	Hops []*ConnectivityHop `json:"hops,omitempty" azure:"ro"`
4475
4476	// READ-ONLY; Maximum latency in milliseconds.
4477	MaxLatencyInMs *int32 `json:"maxLatencyInMs,omitempty" azure:"ro"`
4478
4479	// READ-ONLY; Minimum latency in milliseconds.
4480	MinLatencyInMs *int32 `json:"minLatencyInMs,omitempty" azure:"ro"`
4481
4482	// READ-ONLY; Number of failed probes.
4483	ProbesFailed *int32 `json:"probesFailed,omitempty" azure:"ro"`
4484
4485	// READ-ONLY; Total number of probes sent.
4486	ProbesSent *int32 `json:"probesSent,omitempty" azure:"ro"`
4487}
4488
4489// MarshalJSON implements the json.Marshaller interface for type ConnectivityInformation.
4490func (c ConnectivityInformation) MarshalJSON() ([]byte, error) {
4491	objectMap := make(map[string]interface{})
4492	populate(objectMap, "avgLatencyInMs", c.AvgLatencyInMs)
4493	populate(objectMap, "connectionStatus", c.ConnectionStatus)
4494	populate(objectMap, "hops", c.Hops)
4495	populate(objectMap, "maxLatencyInMs", c.MaxLatencyInMs)
4496	populate(objectMap, "minLatencyInMs", c.MinLatencyInMs)
4497	populate(objectMap, "probesFailed", c.ProbesFailed)
4498	populate(objectMap, "probesSent", c.ProbesSent)
4499	return json.Marshal(objectMap)
4500}
4501
4502// ConnectivityIssue - Information about an issue encountered in the process of checking for connectivity.
4503type ConnectivityIssue struct {
4504	// READ-ONLY; Provides additional context on the issue.
4505	Context []map[string]*string `json:"context,omitempty" azure:"ro"`
4506
4507	// READ-ONLY; The origin of the issue.
4508	Origin *Origin `json:"origin,omitempty" azure:"ro"`
4509
4510	// READ-ONLY; The severity of the issue.
4511	Severity *Severity `json:"severity,omitempty" azure:"ro"`
4512
4513	// READ-ONLY; The type of issue.
4514	Type *IssueType `json:"type,omitempty" azure:"ro"`
4515}
4516
4517// MarshalJSON implements the json.Marshaller interface for type ConnectivityIssue.
4518func (c ConnectivityIssue) MarshalJSON() ([]byte, error) {
4519	objectMap := make(map[string]interface{})
4520	populate(objectMap, "context", c.Context)
4521	populate(objectMap, "origin", c.Origin)
4522	populate(objectMap, "severity", c.Severity)
4523	populate(objectMap, "type", c.Type)
4524	return json.Marshal(objectMap)
4525}
4526
4527// ConnectivityParameters - Parameters that determine how the connectivity check will be performed.
4528type ConnectivityParameters struct {
4529	// REQUIRED; The destination of connection.
4530	Destination *ConnectivityDestination `json:"destination,omitempty"`
4531
4532	// REQUIRED; The source of the connection.
4533	Source *ConnectivitySource `json:"source,omitempty"`
4534
4535	// Preferred IP version of the connection.
4536	PreferredIPVersion *IPVersion `json:"preferredIPVersion,omitempty"`
4537
4538	// Network protocol.
4539	Protocol *Protocol `json:"protocol,omitempty"`
4540
4541	// Configuration of the protocol.
4542	ProtocolConfiguration *ProtocolConfiguration `json:"protocolConfiguration,omitempty"`
4543}
4544
4545// ConnectivitySource - Parameters that define the source of the connection.
4546type ConnectivitySource struct {
4547	// REQUIRED; The ID of the resource from which a connectivity check will be initiated.
4548	ResourceID *string `json:"resourceId,omitempty"`
4549
4550	// The source port from which a connectivity check will be performed.
4551	Port *int32 `json:"port,omitempty"`
4552}
4553
4554// Container - Reference to container resource in remote resource provider.
4555type Container struct {
4556	SubResource
4557}
4558
4559// ContainerNetworkInterface - Container network interface child resource.
4560type ContainerNetworkInterface struct {
4561	SubResource
4562	// The name of the resource. This name can be used to access the resource.
4563	Name *string `json:"name,omitempty"`
4564
4565	// Container network interface properties.
4566	Properties *ContainerNetworkInterfacePropertiesFormat `json:"properties,omitempty"`
4567
4568	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
4569	Etag *string `json:"etag,omitempty" azure:"ro"`
4570
4571	// READ-ONLY; Sub Resource type.
4572	Type *string `json:"type,omitempty" azure:"ro"`
4573}
4574
4575// MarshalJSON implements the json.Marshaller interface for type ContainerNetworkInterface.
4576func (c ContainerNetworkInterface) MarshalJSON() ([]byte, error) {
4577	objectMap := c.SubResource.marshalInternal()
4578	populate(objectMap, "etag", c.Etag)
4579	populate(objectMap, "name", c.Name)
4580	populate(objectMap, "properties", c.Properties)
4581	populate(objectMap, "type", c.Type)
4582	return json.Marshal(objectMap)
4583}
4584
4585// ContainerNetworkInterfaceConfiguration - Container network interface configuration child resource.
4586type ContainerNetworkInterfaceConfiguration struct {
4587	SubResource
4588	// The name of the resource. This name can be used to access the resource.
4589	Name *string `json:"name,omitempty"`
4590
4591	// Container network interface configuration properties.
4592	Properties *ContainerNetworkInterfaceConfigurationPropertiesFormat `json:"properties,omitempty"`
4593
4594	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
4595	Etag *string `json:"etag,omitempty" azure:"ro"`
4596
4597	// READ-ONLY; Sub Resource type.
4598	Type *string `json:"type,omitempty" azure:"ro"`
4599}
4600
4601// MarshalJSON implements the json.Marshaller interface for type ContainerNetworkInterfaceConfiguration.
4602func (c ContainerNetworkInterfaceConfiguration) MarshalJSON() ([]byte, error) {
4603	objectMap := c.SubResource.marshalInternal()
4604	populate(objectMap, "etag", c.Etag)
4605	populate(objectMap, "name", c.Name)
4606	populate(objectMap, "properties", c.Properties)
4607	populate(objectMap, "type", c.Type)
4608	return json.Marshal(objectMap)
4609}
4610
4611// ContainerNetworkInterfaceConfigurationPropertiesFormat - Container network interface configuration properties.
4612type ContainerNetworkInterfaceConfigurationPropertiesFormat struct {
4613	// A list of container network interfaces created from this container network interface configuration.
4614	ContainerNetworkInterfaces []*SubResource `json:"containerNetworkInterfaces,omitempty"`
4615
4616	// A list of ip configurations of the container network interface configuration.
4617	IPConfigurations []*IPConfigurationProfile `json:"ipConfigurations,omitempty"`
4618
4619	// READ-ONLY; The provisioning state of the container network interface configuration resource.
4620	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
4621}
4622
4623// MarshalJSON implements the json.Marshaller interface for type ContainerNetworkInterfaceConfigurationPropertiesFormat.
4624func (c ContainerNetworkInterfaceConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
4625	objectMap := make(map[string]interface{})
4626	populate(objectMap, "containerNetworkInterfaces", c.ContainerNetworkInterfaces)
4627	populate(objectMap, "ipConfigurations", c.IPConfigurations)
4628	populate(objectMap, "provisioningState", c.ProvisioningState)
4629	return json.Marshal(objectMap)
4630}
4631
4632// ContainerNetworkInterfaceIPConfiguration - The ip configuration for a container network interface.
4633type ContainerNetworkInterfaceIPConfiguration struct {
4634	// The name of the resource. This name can be used to access the resource.
4635	Name *string `json:"name,omitempty"`
4636
4637	// Properties of the container network interface IP configuration.
4638	Properties *ContainerNetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"`
4639
4640	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
4641	Etag *string `json:"etag,omitempty" azure:"ro"`
4642
4643	// READ-ONLY; Sub Resource type.
4644	Type *string `json:"type,omitempty" azure:"ro"`
4645}
4646
4647// ContainerNetworkInterfaceIPConfigurationPropertiesFormat - Properties of the container network interface IP configuration.
4648type ContainerNetworkInterfaceIPConfigurationPropertiesFormat struct {
4649	// READ-ONLY; The provisioning state of the container network interface IP configuration resource.
4650	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
4651}
4652
4653// ContainerNetworkInterfacePropertiesFormat - Properties of container network interface.
4654type ContainerNetworkInterfacePropertiesFormat struct {
4655	// Reference to the container to which this container network interface is attached.
4656	Container *Container `json:"container,omitempty"`
4657
4658	// READ-ONLY; Container network interface configuration from which this container network interface is created.
4659	ContainerNetworkInterfaceConfiguration *ContainerNetworkInterfaceConfiguration `json:"containerNetworkInterfaceConfiguration,omitempty" azure:"ro"`
4660
4661	// READ-ONLY; Reference to the ip configuration on this container nic.
4662	IPConfigurations []*ContainerNetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty" azure:"ro"`
4663
4664	// READ-ONLY; The provisioning state of the container network interface resource.
4665	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
4666}
4667
4668// MarshalJSON implements the json.Marshaller interface for type ContainerNetworkInterfacePropertiesFormat.
4669func (c ContainerNetworkInterfacePropertiesFormat) MarshalJSON() ([]byte, error) {
4670	objectMap := make(map[string]interface{})
4671	populate(objectMap, "container", c.Container)
4672	populate(objectMap, "containerNetworkInterfaceConfiguration", c.ContainerNetworkInterfaceConfiguration)
4673	populate(objectMap, "ipConfigurations", c.IPConfigurations)
4674	populate(objectMap, "provisioningState", c.ProvisioningState)
4675	return json.Marshal(objectMap)
4676}
4677
4678// CustomDNSConfigPropertiesFormat - Contains custom Dns resolution configuration from customer.
4679type CustomDNSConfigPropertiesFormat struct {
4680	// Fqdn that resolves to private endpoint ip address.
4681	Fqdn *string `json:"fqdn,omitempty"`
4682
4683	// A list of private ip addresses of the private endpoint.
4684	IPAddresses []*string `json:"ipAddresses,omitempty"`
4685}
4686
4687// MarshalJSON implements the json.Marshaller interface for type CustomDNSConfigPropertiesFormat.
4688func (c CustomDNSConfigPropertiesFormat) MarshalJSON() ([]byte, error) {
4689	objectMap := make(map[string]interface{})
4690	populate(objectMap, "fqdn", c.Fqdn)
4691	populate(objectMap, "ipAddresses", c.IPAddresses)
4692	return json.Marshal(objectMap)
4693}
4694
4695// CustomIPPrefix - Custom IP prefix resource.
4696type CustomIPPrefix struct {
4697	Resource
4698	// The extended location of the custom IP prefix.
4699	ExtendedLocation *ExtendedLocation `json:"extendedLocation,omitempty"`
4700
4701	// Custom IP prefix properties.
4702	Properties *CustomIPPrefixPropertiesFormat `json:"properties,omitempty"`
4703
4704	// A list of availability zones denoting the IP allocated for the resource needs to come from.
4705	Zones []*string `json:"zones,omitempty"`
4706
4707	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
4708	Etag *string `json:"etag,omitempty" azure:"ro"`
4709}
4710
4711// MarshalJSON implements the json.Marshaller interface for type CustomIPPrefix.
4712func (c CustomIPPrefix) MarshalJSON() ([]byte, error) {
4713	objectMap := c.Resource.marshalInternal()
4714	populate(objectMap, "etag", c.Etag)
4715	populate(objectMap, "extendedLocation", c.ExtendedLocation)
4716	populate(objectMap, "properties", c.Properties)
4717	populate(objectMap, "zones", c.Zones)
4718	return json.Marshal(objectMap)
4719}
4720
4721// CustomIPPrefixListResult - Response for ListCustomIpPrefixes API service call.
4722type CustomIPPrefixListResult struct {
4723	// The URL to get the next set of results.
4724	NextLink *string `json:"nextLink,omitempty"`
4725
4726	// A list of Custom IP prefixes that exists in a resource group.
4727	Value []*CustomIPPrefix `json:"value,omitempty"`
4728}
4729
4730// MarshalJSON implements the json.Marshaller interface for type CustomIPPrefixListResult.
4731func (c CustomIPPrefixListResult) MarshalJSON() ([]byte, error) {
4732	objectMap := make(map[string]interface{})
4733	populate(objectMap, "nextLink", c.NextLink)
4734	populate(objectMap, "value", c.Value)
4735	return json.Marshal(objectMap)
4736}
4737
4738// CustomIPPrefixPropertiesFormat - Custom IP prefix properties.
4739type CustomIPPrefixPropertiesFormat struct {
4740	// Authorization message for WAN validation.
4741	AuthorizationMessage *string `json:"authorizationMessage,omitempty"`
4742
4743	// The prefix range in CIDR notation. Should include the start address and the prefix length.
4744	Cidr *string `json:"cidr,omitempty"`
4745
4746	// The commissioned state of the Custom IP Prefix.
4747	CommissionedState *CommissionedState `json:"commissionedState,omitempty"`
4748
4749	// The Parent CustomIpPrefix for IPv6 /64 CustomIpPrefix.
4750	CustomIPPrefixParent *CustomIPPrefix `json:"customIpPrefixParent,omitempty"`
4751
4752	// Signed message for WAN validation.
4753	SignedMessage *string `json:"signedMessage,omitempty"`
4754
4755	// READ-ONLY; The list of all Children for IPv6 /48 CustomIpPrefix.
4756	ChildCustomIPPrefixes []*CustomIPPrefix `json:"childCustomIpPrefixes,omitempty" azure:"ro"`
4757
4758	// READ-ONLY; The reason why resource is in failed state.
4759	FailedReason *string `json:"failedReason,omitempty" azure:"ro"`
4760
4761	// READ-ONLY; The provisioning state of the custom IP prefix resource.
4762	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
4763
4764	// READ-ONLY; The list of all referenced PublicIpPrefixes.
4765	PublicIPPrefixes []*SubResource `json:"publicIpPrefixes,omitempty" azure:"ro"`
4766
4767	// READ-ONLY; The resource GUID property of the custom IP prefix resource.
4768	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
4769}
4770
4771// MarshalJSON implements the json.Marshaller interface for type CustomIPPrefixPropertiesFormat.
4772func (c CustomIPPrefixPropertiesFormat) MarshalJSON() ([]byte, error) {
4773	objectMap := make(map[string]interface{})
4774	populate(objectMap, "authorizationMessage", c.AuthorizationMessage)
4775	populate(objectMap, "childCustomIpPrefixes", c.ChildCustomIPPrefixes)
4776	populate(objectMap, "cidr", c.Cidr)
4777	populate(objectMap, "commissionedState", c.CommissionedState)
4778	populate(objectMap, "customIpPrefixParent", c.CustomIPPrefixParent)
4779	populate(objectMap, "failedReason", c.FailedReason)
4780	populate(objectMap, "provisioningState", c.ProvisioningState)
4781	populate(objectMap, "publicIpPrefixes", c.PublicIPPrefixes)
4782	populate(objectMap, "resourceGuid", c.ResourceGUID)
4783	populate(objectMap, "signedMessage", c.SignedMessage)
4784	return json.Marshal(objectMap)
4785}
4786
4787// CustomIPPrefixesBeginCreateOrUpdateOptions contains the optional parameters for the CustomIPPrefixes.BeginCreateOrUpdate method.
4788type CustomIPPrefixesBeginCreateOrUpdateOptions struct {
4789	// placeholder for future optional parameters
4790}
4791
4792// CustomIPPrefixesBeginDeleteOptions contains the optional parameters for the CustomIPPrefixes.BeginDelete method.
4793type CustomIPPrefixesBeginDeleteOptions struct {
4794	// placeholder for future optional parameters
4795}
4796
4797// CustomIPPrefixesGetOptions contains the optional parameters for the CustomIPPrefixes.Get method.
4798type CustomIPPrefixesGetOptions struct {
4799	// Expands referenced resources.
4800	Expand *string
4801}
4802
4803// CustomIPPrefixesListAllOptions contains the optional parameters for the CustomIPPrefixes.ListAll method.
4804type CustomIPPrefixesListAllOptions struct {
4805	// placeholder for future optional parameters
4806}
4807
4808// CustomIPPrefixesListOptions contains the optional parameters for the CustomIPPrefixes.List method.
4809type CustomIPPrefixesListOptions struct {
4810	// placeholder for future optional parameters
4811}
4812
4813// CustomIPPrefixesUpdateTagsOptions contains the optional parameters for the CustomIPPrefixes.UpdateTags method.
4814type CustomIPPrefixesUpdateTagsOptions struct {
4815	// placeholder for future optional parameters
4816}
4817
4818// DNSNameAvailabilityResult - Response for the CheckDnsNameAvailability API service call.
4819type DNSNameAvailabilityResult struct {
4820	// Domain availability (True/False).
4821	Available *bool `json:"available,omitempty"`
4822}
4823
4824// DNSSettings - DNS Proxy Settings in Firewall Policy.
4825type DNSSettings struct {
4826	// Enable DNS Proxy on Firewalls attached to the Firewall Policy.
4827	EnableProxy *bool `json:"enableProxy,omitempty"`
4828
4829	// FQDNs in Network Rules are supported when set to true.
4830	RequireProxyForNetworkRules *bool `json:"requireProxyForNetworkRules,omitempty"`
4831
4832	// List of Custom DNS Servers.
4833	Servers []*string `json:"servers,omitempty"`
4834}
4835
4836// MarshalJSON implements the json.Marshaller interface for type DNSSettings.
4837func (d DNSSettings) MarshalJSON() ([]byte, error) {
4838	objectMap := make(map[string]interface{})
4839	populate(objectMap, "enableProxy", d.EnableProxy)
4840	populate(objectMap, "requireProxyForNetworkRules", d.RequireProxyForNetworkRules)
4841	populate(objectMap, "servers", d.Servers)
4842	return json.Marshal(objectMap)
4843}
4844
4845// DdosCustomPoliciesBeginCreateOrUpdateOptions contains the optional parameters for the DdosCustomPolicies.BeginCreateOrUpdate method.
4846type DdosCustomPoliciesBeginCreateOrUpdateOptions struct {
4847	// placeholder for future optional parameters
4848}
4849
4850// DdosCustomPoliciesBeginDeleteOptions contains the optional parameters for the DdosCustomPolicies.BeginDelete method.
4851type DdosCustomPoliciesBeginDeleteOptions struct {
4852	// placeholder for future optional parameters
4853}
4854
4855// DdosCustomPoliciesGetOptions contains the optional parameters for the DdosCustomPolicies.Get method.
4856type DdosCustomPoliciesGetOptions struct {
4857	// placeholder for future optional parameters
4858}
4859
4860// DdosCustomPoliciesUpdateTagsOptions contains the optional parameters for the DdosCustomPolicies.UpdateTags method.
4861type DdosCustomPoliciesUpdateTagsOptions struct {
4862	// placeholder for future optional parameters
4863}
4864
4865// DdosCustomPolicy - A DDoS custom policy in a resource group.
4866type DdosCustomPolicy struct {
4867	Resource
4868	// Properties of the DDoS custom policy.
4869	Properties *DdosCustomPolicyPropertiesFormat `json:"properties,omitempty"`
4870
4871	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
4872	Etag *string `json:"etag,omitempty" azure:"ro"`
4873}
4874
4875// MarshalJSON implements the json.Marshaller interface for type DdosCustomPolicy.
4876func (d DdosCustomPolicy) MarshalJSON() ([]byte, error) {
4877	objectMap := d.Resource.marshalInternal()
4878	populate(objectMap, "etag", d.Etag)
4879	populate(objectMap, "properties", d.Properties)
4880	return json.Marshal(objectMap)
4881}
4882
4883// DdosCustomPolicyPropertiesFormat - DDoS custom policy properties.
4884type DdosCustomPolicyPropertiesFormat struct {
4885	// The protocol-specific DDoS policy customization parameters.
4886	ProtocolCustomSettings []*ProtocolCustomSettingsFormat `json:"protocolCustomSettings,omitempty"`
4887
4888	// READ-ONLY; The provisioning state of the DDoS custom policy resource.
4889	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
4890
4891	// READ-ONLY; The list of public IPs associated with the DDoS custom policy resource. This list is read-only.
4892	PublicIPAddresses []*SubResource `json:"publicIPAddresses,omitempty" azure:"ro"`
4893
4894	// READ-ONLY; The resource GUID property of the DDoS custom policy resource. It uniquely identifies the resource, even if the user changes its name or migrate
4895	// the resource across subscriptions or resource groups.
4896	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
4897}
4898
4899// MarshalJSON implements the json.Marshaller interface for type DdosCustomPolicyPropertiesFormat.
4900func (d DdosCustomPolicyPropertiesFormat) MarshalJSON() ([]byte, error) {
4901	objectMap := make(map[string]interface{})
4902	populate(objectMap, "protocolCustomSettings", d.ProtocolCustomSettings)
4903	populate(objectMap, "provisioningState", d.ProvisioningState)
4904	populate(objectMap, "publicIPAddresses", d.PublicIPAddresses)
4905	populate(objectMap, "resourceGuid", d.ResourceGUID)
4906	return json.Marshal(objectMap)
4907}
4908
4909// DdosProtectionPlan - A DDoS protection plan in a resource group.
4910type DdosProtectionPlan struct {
4911	// Resource location.
4912	Location *string `json:"location,omitempty"`
4913
4914	// Properties of the DDoS protection plan.
4915	Properties *DdosProtectionPlanPropertiesFormat `json:"properties,omitempty"`
4916
4917	// Resource tags.
4918	Tags map[string]*string `json:"tags,omitempty"`
4919
4920	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
4921	Etag *string `json:"etag,omitempty" azure:"ro"`
4922
4923	// READ-ONLY; Resource ID.
4924	ID *string `json:"id,omitempty" azure:"ro"`
4925
4926	// READ-ONLY; Resource name.
4927	Name *string `json:"name,omitempty" azure:"ro"`
4928
4929	// READ-ONLY; Resource type.
4930	Type *string `json:"type,omitempty" azure:"ro"`
4931}
4932
4933// MarshalJSON implements the json.Marshaller interface for type DdosProtectionPlan.
4934func (d DdosProtectionPlan) MarshalJSON() ([]byte, error) {
4935	objectMap := make(map[string]interface{})
4936	populate(objectMap, "etag", d.Etag)
4937	populate(objectMap, "id", d.ID)
4938	populate(objectMap, "location", d.Location)
4939	populate(objectMap, "name", d.Name)
4940	populate(objectMap, "properties", d.Properties)
4941	populate(objectMap, "tags", d.Tags)
4942	populate(objectMap, "type", d.Type)
4943	return json.Marshal(objectMap)
4944}
4945
4946// DdosProtectionPlanListResult - A list of DDoS protection plans.
4947type DdosProtectionPlanListResult struct {
4948	// A list of DDoS protection plans.
4949	Value []*DdosProtectionPlan `json:"value,omitempty"`
4950
4951	// READ-ONLY; The URL to get the next set of results.
4952	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
4953}
4954
4955// MarshalJSON implements the json.Marshaller interface for type DdosProtectionPlanListResult.
4956func (d DdosProtectionPlanListResult) MarshalJSON() ([]byte, error) {
4957	objectMap := make(map[string]interface{})
4958	populate(objectMap, "nextLink", d.NextLink)
4959	populate(objectMap, "value", d.Value)
4960	return json.Marshal(objectMap)
4961}
4962
4963// DdosProtectionPlanPropertiesFormat - DDoS protection plan properties.
4964type DdosProtectionPlanPropertiesFormat struct {
4965	// READ-ONLY; The provisioning state of the DDoS protection plan resource.
4966	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
4967
4968	// READ-ONLY; The resource GUID property of the DDoS protection plan resource. It uniquely identifies the resource, even if the user changes its name or
4969	// migrate the resource across subscriptions or resource groups.
4970	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
4971
4972	// READ-ONLY; The list of virtual networks associated with the DDoS protection plan resource. This list is read-only.
4973	VirtualNetworks []*SubResource `json:"virtualNetworks,omitempty" azure:"ro"`
4974}
4975
4976// MarshalJSON implements the json.Marshaller interface for type DdosProtectionPlanPropertiesFormat.
4977func (d DdosProtectionPlanPropertiesFormat) MarshalJSON() ([]byte, error) {
4978	objectMap := make(map[string]interface{})
4979	populate(objectMap, "provisioningState", d.ProvisioningState)
4980	populate(objectMap, "resourceGuid", d.ResourceGUID)
4981	populate(objectMap, "virtualNetworks", d.VirtualNetworks)
4982	return json.Marshal(objectMap)
4983}
4984
4985// DdosProtectionPlansBeginCreateOrUpdateOptions contains the optional parameters for the DdosProtectionPlans.BeginCreateOrUpdate method.
4986type DdosProtectionPlansBeginCreateOrUpdateOptions struct {
4987	// placeholder for future optional parameters
4988}
4989
4990// DdosProtectionPlansBeginDeleteOptions contains the optional parameters for the DdosProtectionPlans.BeginDelete method.
4991type DdosProtectionPlansBeginDeleteOptions struct {
4992	// placeholder for future optional parameters
4993}
4994
4995// DdosProtectionPlansGetOptions contains the optional parameters for the DdosProtectionPlans.Get method.
4996type DdosProtectionPlansGetOptions struct {
4997	// placeholder for future optional parameters
4998}
4999
5000// DdosProtectionPlansListByResourceGroupOptions contains the optional parameters for the DdosProtectionPlans.ListByResourceGroup method.
5001type DdosProtectionPlansListByResourceGroupOptions struct {
5002	// placeholder for future optional parameters
5003}
5004
5005// DdosProtectionPlansListOptions contains the optional parameters for the DdosProtectionPlans.List method.
5006type DdosProtectionPlansListOptions struct {
5007	// placeholder for future optional parameters
5008}
5009
5010// DdosProtectionPlansUpdateTagsOptions contains the optional parameters for the DdosProtectionPlans.UpdateTags method.
5011type DdosProtectionPlansUpdateTagsOptions struct {
5012	// placeholder for future optional parameters
5013}
5014
5015// DdosSettings - Contains the DDoS protection settings of the public IP.
5016type DdosSettings struct {
5017	// The DDoS custom policy associated with the public IP.
5018	DdosCustomPolicy *SubResource `json:"ddosCustomPolicy,omitempty"`
5019
5020	// Enables DDoS protection on the public IP.
5021	ProtectedIP *bool `json:"protectedIP,omitempty"`
5022
5023	// The DDoS protection policy customizability of the public IP. Only standard coverage will have the ability to be customized.
5024	ProtectionCoverage *DdosSettingsProtectionCoverage `json:"protectionCoverage,omitempty"`
5025}
5026
5027// DefaultSecurityRulesGetOptions contains the optional parameters for the DefaultSecurityRules.Get method.
5028type DefaultSecurityRulesGetOptions struct {
5029	// placeholder for future optional parameters
5030}
5031
5032// DefaultSecurityRulesListOptions contains the optional parameters for the DefaultSecurityRules.List method.
5033type DefaultSecurityRulesListOptions struct {
5034	// placeholder for future optional parameters
5035}
5036
5037// Delegation - Details the service to which the subnet is delegated.
5038type Delegation struct {
5039	SubResource
5040	// The name of the resource that is unique within a subnet. This name can be used to access the resource.
5041	Name *string `json:"name,omitempty"`
5042
5043	// Properties of the subnet.
5044	Properties *ServiceDelegationPropertiesFormat `json:"properties,omitempty"`
5045
5046	// Resource type.
5047	Type *string `json:"type,omitempty"`
5048
5049	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
5050	Etag *string `json:"etag,omitempty" azure:"ro"`
5051}
5052
5053// MarshalJSON implements the json.Marshaller interface for type Delegation.
5054func (d Delegation) MarshalJSON() ([]byte, error) {
5055	objectMap := d.SubResource.marshalInternal()
5056	populate(objectMap, "etag", d.Etag)
5057	populate(objectMap, "name", d.Name)
5058	populate(objectMap, "properties", d.Properties)
5059	populate(objectMap, "type", d.Type)
5060	return json.Marshal(objectMap)
5061}
5062
5063// DeviceProperties - List of properties of the device.
5064type DeviceProperties struct {
5065	// Model of the device.
5066	DeviceModel *string `json:"deviceModel,omitempty"`
5067
5068	// Name of the device Vendor.
5069	DeviceVendor *string `json:"deviceVendor,omitempty"`
5070
5071	// Link speed.
5072	LinkSpeedInMbps *int32 `json:"linkSpeedInMbps,omitempty"`
5073}
5074
5075// DhcpOptions contains an array of DNS servers available to VMs deployed in the virtual network. Standard DHCP option for a subnet overrides VNET DHCP
5076// options.
5077type DhcpOptions struct {
5078	// The list of DNS servers IP addresses.
5079	DNSServers []*string `json:"dnsServers,omitempty"`
5080}
5081
5082// MarshalJSON implements the json.Marshaller interface for type DhcpOptions.
5083func (d DhcpOptions) MarshalJSON() ([]byte, error) {
5084	objectMap := make(map[string]interface{})
5085	populate(objectMap, "dnsServers", d.DNSServers)
5086	return json.Marshal(objectMap)
5087}
5088
5089// Dimension of the metric.
5090type Dimension struct {
5091	// The display name of the dimension.
5092	DisplayName *string `json:"displayName,omitempty"`
5093
5094	// The internal name of the dimension.
5095	InternalName *string `json:"internalName,omitempty"`
5096
5097	// The name of the dimension.
5098	Name *string `json:"name,omitempty"`
5099}
5100
5101// DscpConfiguration - DSCP Configuration in a resource group.
5102type DscpConfiguration struct {
5103	Resource
5104	// Properties of the network interface.
5105	Properties *DscpConfigurationPropertiesFormat `json:"properties,omitempty"`
5106
5107	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
5108	Etag *string `json:"etag,omitempty" azure:"ro"`
5109}
5110
5111// MarshalJSON implements the json.Marshaller interface for type DscpConfiguration.
5112func (d DscpConfiguration) MarshalJSON() ([]byte, error) {
5113	objectMap := d.Resource.marshalInternal()
5114	populate(objectMap, "etag", d.Etag)
5115	populate(objectMap, "properties", d.Properties)
5116	return json.Marshal(objectMap)
5117}
5118
5119// DscpConfigurationBeginCreateOrUpdateOptions contains the optional parameters for the DscpConfiguration.BeginCreateOrUpdate method.
5120type DscpConfigurationBeginCreateOrUpdateOptions struct {
5121	// placeholder for future optional parameters
5122}
5123
5124// DscpConfigurationBeginDeleteOptions contains the optional parameters for the DscpConfiguration.BeginDelete method.
5125type DscpConfigurationBeginDeleteOptions struct {
5126	// placeholder for future optional parameters
5127}
5128
5129// DscpConfigurationGetOptions contains the optional parameters for the DscpConfiguration.Get method.
5130type DscpConfigurationGetOptions struct {
5131	// placeholder for future optional parameters
5132}
5133
5134// DscpConfigurationListAllOptions contains the optional parameters for the DscpConfiguration.ListAll method.
5135type DscpConfigurationListAllOptions struct {
5136	// placeholder for future optional parameters
5137}
5138
5139// DscpConfigurationListOptions contains the optional parameters for the DscpConfiguration.List method.
5140type DscpConfigurationListOptions struct {
5141	// placeholder for future optional parameters
5142}
5143
5144// DscpConfigurationListResult - Response for the DscpConfigurationList API service call.
5145type DscpConfigurationListResult struct {
5146	// A list of dscp configurations in a resource group.
5147	Value []*DscpConfiguration `json:"value,omitempty"`
5148
5149	// READ-ONLY; The URL to get the next set of results.
5150	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
5151}
5152
5153// MarshalJSON implements the json.Marshaller interface for type DscpConfigurationListResult.
5154func (d DscpConfigurationListResult) MarshalJSON() ([]byte, error) {
5155	objectMap := make(map[string]interface{})
5156	populate(objectMap, "nextLink", d.NextLink)
5157	populate(objectMap, "value", d.Value)
5158	return json.Marshal(objectMap)
5159}
5160
5161// DscpConfigurationPropertiesFormat - DSCP Configuration properties.
5162type DscpConfigurationPropertiesFormat struct {
5163	// Destination IP ranges.
5164	DestinationIPRanges []*QosIPRange `json:"destinationIpRanges,omitempty"`
5165
5166	// Destination port ranges.
5167	DestinationPortRanges []*QosPortRange `json:"destinationPortRanges,omitempty"`
5168
5169	// List of markings to be used in the configuration.
5170	Markings []*int32 `json:"markings,omitempty"`
5171
5172	// RNM supported protocol types.
5173	Protocol *ProtocolType `json:"protocol,omitempty"`
5174
5175	// Source IP ranges.
5176	SourceIPRanges []*QosIPRange `json:"sourceIpRanges,omitempty"`
5177
5178	// Sources port ranges.
5179	SourcePortRanges []*QosPortRange `json:"sourcePortRanges,omitempty"`
5180
5181	// READ-ONLY; Associated Network Interfaces to the DSCP Configuration.
5182	AssociatedNetworkInterfaces []*NetworkInterface `json:"associatedNetworkInterfaces,omitempty" azure:"ro"`
5183
5184	// READ-ONLY; The provisioning state of the DSCP Configuration resource.
5185	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
5186
5187	// READ-ONLY; Qos Collection ID generated by RNM.
5188	QosCollectionID *string `json:"qosCollectionId,omitempty" azure:"ro"`
5189
5190	// READ-ONLY; The resource GUID property of the DSCP Configuration resource.
5191	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
5192}
5193
5194// MarshalJSON implements the json.Marshaller interface for type DscpConfigurationPropertiesFormat.
5195func (d DscpConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
5196	objectMap := make(map[string]interface{})
5197	populate(objectMap, "associatedNetworkInterfaces", d.AssociatedNetworkInterfaces)
5198	populate(objectMap, "destinationIpRanges", d.DestinationIPRanges)
5199	populate(objectMap, "destinationPortRanges", d.DestinationPortRanges)
5200	populate(objectMap, "markings", d.Markings)
5201	populate(objectMap, "protocol", d.Protocol)
5202	populate(objectMap, "provisioningState", d.ProvisioningState)
5203	populate(objectMap, "qosCollectionId", d.QosCollectionID)
5204	populate(objectMap, "resourceGuid", d.ResourceGUID)
5205	populate(objectMap, "sourceIpRanges", d.SourceIPRanges)
5206	populate(objectMap, "sourcePortRanges", d.SourcePortRanges)
5207	return json.Marshal(objectMap)
5208}
5209
5210// EffectiveNetworkSecurityGroup - Effective network security group.
5211type EffectiveNetworkSecurityGroup struct {
5212	// Associated resources.
5213	Association *EffectiveNetworkSecurityGroupAssociation `json:"association,omitempty"`
5214
5215	// A collection of effective security rules.
5216	EffectiveSecurityRules []*EffectiveNetworkSecurityRule `json:"effectiveSecurityRules,omitempty"`
5217
5218	// The ID of network security group that is applied.
5219	NetworkSecurityGroup *SubResource `json:"networkSecurityGroup,omitempty"`
5220
5221	// Mapping of tags to list of IP Addresses included within the tag.
5222	TagMap *string `json:"tagMap,omitempty"`
5223}
5224
5225// MarshalJSON implements the json.Marshaller interface for type EffectiveNetworkSecurityGroup.
5226func (e EffectiveNetworkSecurityGroup) MarshalJSON() ([]byte, error) {
5227	objectMap := make(map[string]interface{})
5228	populate(objectMap, "association", e.Association)
5229	populate(objectMap, "effectiveSecurityRules", e.EffectiveSecurityRules)
5230	populate(objectMap, "networkSecurityGroup", e.NetworkSecurityGroup)
5231	populate(objectMap, "tagMap", e.TagMap)
5232	return json.Marshal(objectMap)
5233}
5234
5235// EffectiveNetworkSecurityGroupAssociation - The effective network security group association.
5236type EffectiveNetworkSecurityGroupAssociation struct {
5237	// The ID of the network interface if assigned.
5238	NetworkInterface *SubResource `json:"networkInterface,omitempty"`
5239
5240	// The ID of the Azure network manager if assigned.
5241	NetworkManager *SubResource `json:"networkManager,omitempty"`
5242
5243	// The ID of the subnet if assigned.
5244	Subnet *SubResource `json:"subnet,omitempty"`
5245}
5246
5247// EffectiveNetworkSecurityGroupListResult - Response for list effective network security groups API service call.
5248type EffectiveNetworkSecurityGroupListResult struct {
5249	// A list of effective network security groups.
5250	Value []*EffectiveNetworkSecurityGroup `json:"value,omitempty"`
5251
5252	// READ-ONLY; The URL to get the next set of results.
5253	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
5254}
5255
5256// MarshalJSON implements the json.Marshaller interface for type EffectiveNetworkSecurityGroupListResult.
5257func (e EffectiveNetworkSecurityGroupListResult) MarshalJSON() ([]byte, error) {
5258	objectMap := make(map[string]interface{})
5259	populate(objectMap, "nextLink", e.NextLink)
5260	populate(objectMap, "value", e.Value)
5261	return json.Marshal(objectMap)
5262}
5263
5264// EffectiveNetworkSecurityRule - Effective network security rules.
5265type EffectiveNetworkSecurityRule struct {
5266	// Whether network traffic is allowed or denied.
5267	Access *SecurityRuleAccess `json:"access,omitempty"`
5268
5269	// The destination address prefix.
5270	DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"`
5271
5272	// The destination address prefixes. Expected values include CIDR IP ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and
5273	// the asterisk (*).
5274	DestinationAddressPrefixes []*string `json:"destinationAddressPrefixes,omitempty"`
5275
5276	// The destination port or range.
5277	DestinationPortRange *string `json:"destinationPortRange,omitempty"`
5278
5279	// The destination port ranges. Expected values include a single integer between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk
5280	// (*).
5281	DestinationPortRanges []*string `json:"destinationPortRanges,omitempty"`
5282
5283	// The direction of the rule.
5284	Direction *SecurityRuleDirection `json:"direction,omitempty"`
5285
5286	// Expanded destination address prefix.
5287	ExpandedDestinationAddressPrefix []*string `json:"expandedDestinationAddressPrefix,omitempty"`
5288
5289	// The expanded source address prefix.
5290	ExpandedSourceAddressPrefix []*string `json:"expandedSourceAddressPrefix,omitempty"`
5291
5292	// The name of the security rule specified by the user (if created by the user).
5293	Name *string `json:"name,omitempty"`
5294
5295	// The priority of the rule.
5296	Priority *int32 `json:"priority,omitempty"`
5297
5298	// The network protocol this rule applies to.
5299	Protocol *EffectiveSecurityRuleProtocol `json:"protocol,omitempty"`
5300
5301	// The source address prefix.
5302	SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"`
5303
5304	// The source address prefixes. Expected values include CIDR IP ranges, Default Tags (VirtualNetwork, AzureLoadBalancer, Internet), System Tags, and the
5305	// asterisk (*).
5306	SourceAddressPrefixes []*string `json:"sourceAddressPrefixes,omitempty"`
5307
5308	// The source port or range.
5309	SourcePortRange *string `json:"sourcePortRange,omitempty"`
5310
5311	// The source port ranges. Expected values include a single integer between 0 and 65535, a range using '-' as separator (e.g. 100-400), or an asterisk (*).
5312	SourcePortRanges []*string `json:"sourcePortRanges,omitempty"`
5313}
5314
5315// MarshalJSON implements the json.Marshaller interface for type EffectiveNetworkSecurityRule.
5316func (e EffectiveNetworkSecurityRule) MarshalJSON() ([]byte, error) {
5317	objectMap := make(map[string]interface{})
5318	populate(objectMap, "access", e.Access)
5319	populate(objectMap, "destinationAddressPrefix", e.DestinationAddressPrefix)
5320	populate(objectMap, "destinationAddressPrefixes", e.DestinationAddressPrefixes)
5321	populate(objectMap, "destinationPortRange", e.DestinationPortRange)
5322	populate(objectMap, "destinationPortRanges", e.DestinationPortRanges)
5323	populate(objectMap, "direction", e.Direction)
5324	populate(objectMap, "expandedDestinationAddressPrefix", e.ExpandedDestinationAddressPrefix)
5325	populate(objectMap, "expandedSourceAddressPrefix", e.ExpandedSourceAddressPrefix)
5326	populate(objectMap, "name", e.Name)
5327	populate(objectMap, "priority", e.Priority)
5328	populate(objectMap, "protocol", e.Protocol)
5329	populate(objectMap, "sourceAddressPrefix", e.SourceAddressPrefix)
5330	populate(objectMap, "sourceAddressPrefixes", e.SourceAddressPrefixes)
5331	populate(objectMap, "sourcePortRange", e.SourcePortRange)
5332	populate(objectMap, "sourcePortRanges", e.SourcePortRanges)
5333	return json.Marshal(objectMap)
5334}
5335
5336// EffectiveRoute - Effective Route.
5337type EffectiveRoute struct {
5338	// The address prefixes of the effective routes in CIDR notation.
5339	AddressPrefix []*string `json:"addressPrefix,omitempty"`
5340
5341	// If true, on-premises routes are not propagated to the network interfaces in the subnet.
5342	DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"`
5343
5344	// The name of the user defined route. This is optional.
5345	Name *string `json:"name,omitempty"`
5346
5347	// The IP address of the next hop of the effective route.
5348	NextHopIPAddress []*string `json:"nextHopIpAddress,omitempty"`
5349
5350	// The type of Azure hop the packet should be sent to.
5351	NextHopType *RouteNextHopType `json:"nextHopType,omitempty"`
5352
5353	// Who created the route.
5354	Source *EffectiveRouteSource `json:"source,omitempty"`
5355
5356	// The value of effective route.
5357	State *EffectiveRouteState `json:"state,omitempty"`
5358}
5359
5360// MarshalJSON implements the json.Marshaller interface for type EffectiveRoute.
5361func (e EffectiveRoute) MarshalJSON() ([]byte, error) {
5362	objectMap := make(map[string]interface{})
5363	populate(objectMap, "addressPrefix", e.AddressPrefix)
5364	populate(objectMap, "disableBgpRoutePropagation", e.DisableBgpRoutePropagation)
5365	populate(objectMap, "name", e.Name)
5366	populate(objectMap, "nextHopIpAddress", e.NextHopIPAddress)
5367	populate(objectMap, "nextHopType", e.NextHopType)
5368	populate(objectMap, "source", e.Source)
5369	populate(objectMap, "state", e.State)
5370	return json.Marshal(objectMap)
5371}
5372
5373// EffectiveRouteListResult - Response for list effective route API service call.
5374type EffectiveRouteListResult struct {
5375	// A list of effective routes.
5376	Value []*EffectiveRoute `json:"value,omitempty"`
5377
5378	// READ-ONLY; The URL to get the next set of results.
5379	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
5380}
5381
5382// MarshalJSON implements the json.Marshaller interface for type EffectiveRouteListResult.
5383func (e EffectiveRouteListResult) MarshalJSON() ([]byte, error) {
5384	objectMap := make(map[string]interface{})
5385	populate(objectMap, "nextLink", e.NextLink)
5386	populate(objectMap, "value", e.Value)
5387	return json.Marshal(objectMap)
5388}
5389
5390// EffectiveRoutesParameters - The parameters specifying the resource whose effective routes are being requested.
5391type EffectiveRoutesParameters struct {
5392	// The resource whose effective routes are being requested.
5393	ResourceID *string `json:"resourceId,omitempty"`
5394
5395	// The type of the specified resource like RouteTable, ExpressRouteConnection, HubVirtualNetworkConnection, VpnConnection and P2SConnection.
5396	VirtualWanResourceType *string `json:"virtualWanResourceType,omitempty"`
5397}
5398
5399// EndpointServiceResult - Endpoint service.
5400type EndpointServiceResult struct {
5401	SubResource
5402	// READ-ONLY; Name of the endpoint service.
5403	Name *string `json:"name,omitempty" azure:"ro"`
5404
5405	// READ-ONLY; Type of the endpoint service.
5406	Type *string `json:"type,omitempty" azure:"ro"`
5407}
5408
5409// MarshalJSON implements the json.Marshaller interface for type EndpointServiceResult.
5410func (e EndpointServiceResult) MarshalJSON() ([]byte, error) {
5411	objectMap := e.SubResource.marshalInternal()
5412	populate(objectMap, "name", e.Name)
5413	populate(objectMap, "type", e.Type)
5414	return json.Marshal(objectMap)
5415}
5416
5417// EndpointServicesListResult - Response for the ListAvailableEndpointServices API service call.
5418type EndpointServicesListResult struct {
5419	// The URL to get the next set of results.
5420	NextLink *string `json:"nextLink,omitempty"`
5421
5422	// List of available endpoint services in a region.
5423	Value []*EndpointServiceResult `json:"value,omitempty"`
5424}
5425
5426// MarshalJSON implements the json.Marshaller interface for type EndpointServicesListResult.
5427func (e EndpointServicesListResult) MarshalJSON() ([]byte, error) {
5428	objectMap := make(map[string]interface{})
5429	populate(objectMap, "nextLink", e.NextLink)
5430	populate(objectMap, "value", e.Value)
5431	return json.Marshal(objectMap)
5432}
5433
5434// Error - Common error representation.
5435// Implements the error and azcore.HTTPResponse interfaces.
5436type Error struct {
5437	raw string
5438	// Error code.
5439	Code *string `json:"code,omitempty"`
5440
5441	// Error details.
5442	Details []*ErrorDetails `json:"details,omitempty"`
5443
5444	// Inner error message.
5445	InnerError *string `json:"innerError,omitempty"`
5446
5447	// Error message.
5448	Message *string `json:"message,omitempty"`
5449
5450	// Error target.
5451	Target *string `json:"target,omitempty"`
5452}
5453
5454// Error implements the error interface for type Error.
5455// The contents of the error text are not contractual and subject to change.
5456func (e Error) Error() string {
5457	return e.raw
5458}
5459
5460// ErrorDetails - Common error details representation.
5461type ErrorDetails struct {
5462	// Error code.
5463	Code *string `json:"code,omitempty"`
5464
5465	// Error message.
5466	Message *string `json:"message,omitempty"`
5467
5468	// Error target.
5469	Target *string `json:"target,omitempty"`
5470}
5471
5472// ErrorResponse - The error object.
5473// Implements the error and azcore.HTTPResponse interfaces.
5474type ErrorResponse struct {
5475	raw string
5476	// The error details object.
5477	InnerError *ErrorDetails `json:"error,omitempty"`
5478}
5479
5480// Error implements the error interface for type ErrorResponse.
5481// The contents of the error text are not contractual and subject to change.
5482func (e ErrorResponse) Error() string {
5483	return e.raw
5484}
5485
5486// EvaluatedNetworkSecurityGroup - Results of network security group evaluation.
5487type EvaluatedNetworkSecurityGroup struct {
5488	// Resource ID of nic or subnet to which network security group is applied.
5489	AppliedTo *string `json:"appliedTo,omitempty"`
5490
5491	// Matched network security rule.
5492	MatchedRule *MatchedRule `json:"matchedRule,omitempty"`
5493
5494	// Network security group ID.
5495	NetworkSecurityGroupID *string `json:"networkSecurityGroupId,omitempty"`
5496
5497	// READ-ONLY; List of network security rules evaluation results.
5498	RulesEvaluationResult []*NetworkSecurityRulesEvaluationResult `json:"rulesEvaluationResult,omitempty" azure:"ro"`
5499}
5500
5501// MarshalJSON implements the json.Marshaller interface for type EvaluatedNetworkSecurityGroup.
5502func (e EvaluatedNetworkSecurityGroup) MarshalJSON() ([]byte, error) {
5503	objectMap := make(map[string]interface{})
5504	populate(objectMap, "appliedTo", e.AppliedTo)
5505	populate(objectMap, "matchedRule", e.MatchedRule)
5506	populate(objectMap, "networkSecurityGroupId", e.NetworkSecurityGroupID)
5507	populate(objectMap, "rulesEvaluationResult", e.RulesEvaluationResult)
5508	return json.Marshal(objectMap)
5509}
5510
5511// ExpressRouteCircuit resource.
5512type ExpressRouteCircuit struct {
5513	Resource
5514	// Properties of the express route circuit.
5515	Properties *ExpressRouteCircuitPropertiesFormat `json:"properties,omitempty"`
5516
5517	// The SKU.
5518	SKU *ExpressRouteCircuitSKU `json:"sku,omitempty"`
5519
5520	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
5521	Etag *string `json:"etag,omitempty" azure:"ro"`
5522}
5523
5524// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuit.
5525func (e ExpressRouteCircuit) MarshalJSON() ([]byte, error) {
5526	objectMap := e.Resource.marshalInternal()
5527	populate(objectMap, "etag", e.Etag)
5528	populate(objectMap, "properties", e.Properties)
5529	populate(objectMap, "sku", e.SKU)
5530	return json.Marshal(objectMap)
5531}
5532
5533// ExpressRouteCircuitArpTable - The ARP table associated with the ExpressRouteCircuit.
5534type ExpressRouteCircuitArpTable struct {
5535	// Entry age in minutes.
5536	Age *int32 `json:"age,omitempty"`
5537
5538	// The IP address.
5539	IPAddress *string `json:"ipAddress,omitempty"`
5540
5541	// Interface address.
5542	Interface *string `json:"interface,omitempty"`
5543
5544	// The MAC address.
5545	MacAddress *string `json:"macAddress,omitempty"`
5546}
5547
5548// ExpressRouteCircuitAuthorization - Authorization in an ExpressRouteCircuit resource.
5549type ExpressRouteCircuitAuthorization struct {
5550	SubResource
5551	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
5552	Name *string `json:"name,omitempty"`
5553
5554	// Properties of the express route circuit authorization.
5555	Properties *AuthorizationPropertiesFormat `json:"properties,omitempty"`
5556
5557	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
5558	Etag *string `json:"etag,omitempty" azure:"ro"`
5559
5560	// READ-ONLY; Type of the resource.
5561	Type *string `json:"type,omitempty" azure:"ro"`
5562}
5563
5564// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitAuthorization.
5565func (e ExpressRouteCircuitAuthorization) MarshalJSON() ([]byte, error) {
5566	objectMap := e.SubResource.marshalInternal()
5567	populate(objectMap, "etag", e.Etag)
5568	populate(objectMap, "name", e.Name)
5569	populate(objectMap, "properties", e.Properties)
5570	populate(objectMap, "type", e.Type)
5571	return json.Marshal(objectMap)
5572}
5573
5574// ExpressRouteCircuitAuthorizationsBeginCreateOrUpdateOptions contains the optional parameters for the ExpressRouteCircuitAuthorizations.BeginCreateOrUpdate
5575// method.
5576type ExpressRouteCircuitAuthorizationsBeginCreateOrUpdateOptions struct {
5577	// placeholder for future optional parameters
5578}
5579
5580// ExpressRouteCircuitAuthorizationsBeginDeleteOptions contains the optional parameters for the ExpressRouteCircuitAuthorizations.BeginDelete method.
5581type ExpressRouteCircuitAuthorizationsBeginDeleteOptions struct {
5582	// placeholder for future optional parameters
5583}
5584
5585// ExpressRouteCircuitAuthorizationsGetOptions contains the optional parameters for the ExpressRouteCircuitAuthorizations.Get method.
5586type ExpressRouteCircuitAuthorizationsGetOptions struct {
5587	// placeholder for future optional parameters
5588}
5589
5590// ExpressRouteCircuitAuthorizationsListOptions contains the optional parameters for the ExpressRouteCircuitAuthorizations.List method.
5591type ExpressRouteCircuitAuthorizationsListOptions struct {
5592	// placeholder for future optional parameters
5593}
5594
5595// ExpressRouteCircuitConnection - Express Route Circuit Connection in an ExpressRouteCircuitPeering resource.
5596type ExpressRouteCircuitConnection struct {
5597	SubResource
5598	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
5599	Name *string `json:"name,omitempty"`
5600
5601	// Properties of the express route circuit connection.
5602	Properties *ExpressRouteCircuitConnectionPropertiesFormat `json:"properties,omitempty"`
5603
5604	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
5605	Etag *string `json:"etag,omitempty" azure:"ro"`
5606
5607	// READ-ONLY; Type of the resource.
5608	Type *string `json:"type,omitempty" azure:"ro"`
5609}
5610
5611// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitConnection.
5612func (e ExpressRouteCircuitConnection) MarshalJSON() ([]byte, error) {
5613	objectMap := e.SubResource.marshalInternal()
5614	populate(objectMap, "etag", e.Etag)
5615	populate(objectMap, "name", e.Name)
5616	populate(objectMap, "properties", e.Properties)
5617	populate(objectMap, "type", e.Type)
5618	return json.Marshal(objectMap)
5619}
5620
5621// ExpressRouteCircuitConnectionListResult - Response for ListConnections API service call retrieves all global reach connections that belongs to a Private
5622// Peering for an ExpressRouteCircuit.
5623type ExpressRouteCircuitConnectionListResult struct {
5624	// The URL to get the next set of results.
5625	NextLink *string `json:"nextLink,omitempty"`
5626
5627	// The global reach connection associated with Private Peering in an ExpressRoute Circuit.
5628	Value []*ExpressRouteCircuitConnection `json:"value,omitempty"`
5629}
5630
5631// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitConnectionListResult.
5632func (e ExpressRouteCircuitConnectionListResult) MarshalJSON() ([]byte, error) {
5633	objectMap := make(map[string]interface{})
5634	populate(objectMap, "nextLink", e.NextLink)
5635	populate(objectMap, "value", e.Value)
5636	return json.Marshal(objectMap)
5637}
5638
5639// ExpressRouteCircuitConnectionPropertiesFormat - Properties of the express route circuit connection.
5640type ExpressRouteCircuitConnectionPropertiesFormat struct {
5641	// /29 IP address space to carve out Customer addresses for tunnels.
5642	AddressPrefix *string `json:"addressPrefix,omitempty"`
5643
5644	// The authorization key.
5645	AuthorizationKey *string `json:"authorizationKey,omitempty"`
5646
5647	// Reference to Express Route Circuit Private Peering Resource of the circuit initiating connection.
5648	ExpressRouteCircuitPeering *SubResource `json:"expressRouteCircuitPeering,omitempty"`
5649
5650	// IPv6 Address PrefixProperties of the express route circuit connection.
5651	IPv6CircuitConnectionConfig *IPv6CircuitConnectionConfig `json:"ipv6CircuitConnectionConfig,omitempty"`
5652
5653	// Reference to Express Route Circuit Private Peering Resource of the peered circuit.
5654	PeerExpressRouteCircuitPeering *SubResource `json:"peerExpressRouteCircuitPeering,omitempty"`
5655
5656	// READ-ONLY; Express Route Circuit connection state.
5657	CircuitConnectionStatus *CircuitConnectionStatus `json:"circuitConnectionStatus,omitempty" azure:"ro"`
5658
5659	// READ-ONLY; The provisioning state of the express route circuit connection resource.
5660	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
5661}
5662
5663// ExpressRouteCircuitConnectionsBeginCreateOrUpdateOptions contains the optional parameters for the ExpressRouteCircuitConnections.BeginCreateOrUpdate
5664// method.
5665type ExpressRouteCircuitConnectionsBeginCreateOrUpdateOptions struct {
5666	// placeholder for future optional parameters
5667}
5668
5669// ExpressRouteCircuitConnectionsBeginDeleteOptions contains the optional parameters for the ExpressRouteCircuitConnections.BeginDelete method.
5670type ExpressRouteCircuitConnectionsBeginDeleteOptions struct {
5671	// placeholder for future optional parameters
5672}
5673
5674// ExpressRouteCircuitConnectionsGetOptions contains the optional parameters for the ExpressRouteCircuitConnections.Get method.
5675type ExpressRouteCircuitConnectionsGetOptions struct {
5676	// placeholder for future optional parameters
5677}
5678
5679// ExpressRouteCircuitConnectionsListOptions contains the optional parameters for the ExpressRouteCircuitConnections.List method.
5680type ExpressRouteCircuitConnectionsListOptions struct {
5681	// placeholder for future optional parameters
5682}
5683
5684// ExpressRouteCircuitListResult - Response for ListExpressRouteCircuit API service call.
5685type ExpressRouteCircuitListResult struct {
5686	// The URL to get the next set of results.
5687	NextLink *string `json:"nextLink,omitempty"`
5688
5689	// A list of ExpressRouteCircuits in a resource group.
5690	Value []*ExpressRouteCircuit `json:"value,omitempty"`
5691}
5692
5693// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitListResult.
5694func (e ExpressRouteCircuitListResult) MarshalJSON() ([]byte, error) {
5695	objectMap := make(map[string]interface{})
5696	populate(objectMap, "nextLink", e.NextLink)
5697	populate(objectMap, "value", e.Value)
5698	return json.Marshal(objectMap)
5699}
5700
5701// ExpressRouteCircuitPeering - Peering in an ExpressRouteCircuit resource.
5702type ExpressRouteCircuitPeering struct {
5703	SubResource
5704	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
5705	Name *string `json:"name,omitempty"`
5706
5707	// Properties of the express route circuit peering.
5708	Properties *ExpressRouteCircuitPeeringPropertiesFormat `json:"properties,omitempty"`
5709
5710	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
5711	Etag *string `json:"etag,omitempty" azure:"ro"`
5712
5713	// READ-ONLY; Type of the resource.
5714	Type *string `json:"type,omitempty" azure:"ro"`
5715}
5716
5717// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitPeering.
5718func (e ExpressRouteCircuitPeering) MarshalJSON() ([]byte, error) {
5719	objectMap := e.SubResource.marshalInternal()
5720	populate(objectMap, "etag", e.Etag)
5721	populate(objectMap, "name", e.Name)
5722	populate(objectMap, "properties", e.Properties)
5723	populate(objectMap, "type", e.Type)
5724	return json.Marshal(objectMap)
5725}
5726
5727// ExpressRouteCircuitPeeringConfig - Specifies the peering configuration.
5728type ExpressRouteCircuitPeeringConfig struct {
5729	// The communities of bgp peering. Specified for microsoft peering.
5730	AdvertisedCommunities []*string `json:"advertisedCommunities,omitempty"`
5731
5732	// The reference to AdvertisedPublicPrefixes.
5733	AdvertisedPublicPrefixes []*string `json:"advertisedPublicPrefixes,omitempty"`
5734
5735	// The CustomerASN of the peering.
5736	CustomerASN *int32 `json:"customerASN,omitempty"`
5737
5738	// The legacy mode of the peering.
5739	LegacyMode *int32 `json:"legacyMode,omitempty"`
5740
5741	// The RoutingRegistryName of the configuration.
5742	RoutingRegistryName *string `json:"routingRegistryName,omitempty"`
5743
5744	// READ-ONLY; The advertised public prefix state of the Peering resource.
5745	AdvertisedPublicPrefixesState *ExpressRouteCircuitPeeringAdvertisedPublicPrefixState `json:"advertisedPublicPrefixesState,omitempty" azure:"ro"`
5746}
5747
5748// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitPeeringConfig.
5749func (e ExpressRouteCircuitPeeringConfig) MarshalJSON() ([]byte, error) {
5750	objectMap := make(map[string]interface{})
5751	populate(objectMap, "advertisedCommunities", e.AdvertisedCommunities)
5752	populate(objectMap, "advertisedPublicPrefixes", e.AdvertisedPublicPrefixes)
5753	populate(objectMap, "advertisedPublicPrefixesState", e.AdvertisedPublicPrefixesState)
5754	populate(objectMap, "customerASN", e.CustomerASN)
5755	populate(objectMap, "legacyMode", e.LegacyMode)
5756	populate(objectMap, "routingRegistryName", e.RoutingRegistryName)
5757	return json.Marshal(objectMap)
5758}
5759
5760// ExpressRouteCircuitPeeringID - ExpressRoute circuit peering identifier.
5761type ExpressRouteCircuitPeeringID struct {
5762	// The ID of the ExpressRoute circuit peering.
5763	ID *string `json:"id,omitempty"`
5764}
5765
5766// ExpressRouteCircuitPeeringListResult - Response for ListPeering API service call retrieves all peerings that belong to an ExpressRouteCircuit.
5767type ExpressRouteCircuitPeeringListResult struct {
5768	// The URL to get the next set of results.
5769	NextLink *string `json:"nextLink,omitempty"`
5770
5771	// The peerings in an express route circuit.
5772	Value []*ExpressRouteCircuitPeering `json:"value,omitempty"`
5773}
5774
5775// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitPeeringListResult.
5776func (e ExpressRouteCircuitPeeringListResult) MarshalJSON() ([]byte, error) {
5777	objectMap := make(map[string]interface{})
5778	populate(objectMap, "nextLink", e.NextLink)
5779	populate(objectMap, "value", e.Value)
5780	return json.Marshal(objectMap)
5781}
5782
5783// ExpressRouteCircuitPeeringPropertiesFormat - Properties of the express route circuit peering.
5784type ExpressRouteCircuitPeeringPropertiesFormat struct {
5785	// The Azure ASN.
5786	AzureASN *int32 `json:"azureASN,omitempty"`
5787
5788	// The list of circuit connections associated with Azure Private Peering for this circuit.
5789	Connections []*ExpressRouteCircuitConnection `json:"connections,omitempty"`
5790
5791	// The ExpressRoute connection.
5792	ExpressRouteConnection *ExpressRouteConnectionID `json:"expressRouteConnection,omitempty"`
5793
5794	// The GatewayManager Etag.
5795	GatewayManagerEtag *string `json:"gatewayManagerEtag,omitempty"`
5796
5797	// The IPv6 peering configuration.
5798	IPv6PeeringConfig *IPv6ExpressRouteCircuitPeeringConfig `json:"ipv6PeeringConfig,omitempty"`
5799
5800	// The Microsoft peering configuration.
5801	MicrosoftPeeringConfig *ExpressRouteCircuitPeeringConfig `json:"microsoftPeeringConfig,omitempty"`
5802
5803	// The peer ASN.
5804	PeerASN *int64 `json:"peerASN,omitempty"`
5805
5806	// The peering type.
5807	PeeringType *ExpressRoutePeeringType `json:"peeringType,omitempty"`
5808
5809	// The primary port.
5810	PrimaryAzurePort *string `json:"primaryAzurePort,omitempty"`
5811
5812	// The primary address prefix.
5813	PrimaryPeerAddressPrefix *string `json:"primaryPeerAddressPrefix,omitempty"`
5814
5815	// The reference to the RouteFilter resource.
5816	RouteFilter *SubResource `json:"routeFilter,omitempty"`
5817
5818	// The secondary port.
5819	SecondaryAzurePort *string `json:"secondaryAzurePort,omitempty"`
5820
5821	// The secondary address prefix.
5822	SecondaryPeerAddressPrefix *string `json:"secondaryPeerAddressPrefix,omitempty"`
5823
5824	// The shared key.
5825	SharedKey *string `json:"sharedKey,omitempty"`
5826
5827	// The peering state.
5828	State *ExpressRoutePeeringState `json:"state,omitempty"`
5829
5830	// The peering stats of express route circuit.
5831	Stats *ExpressRouteCircuitStats `json:"stats,omitempty"`
5832
5833	// The VLAN ID.
5834	VlanID *int32 `json:"vlanId,omitempty"`
5835
5836	// READ-ONLY; Who was the last to modify the peering.
5837	LastModifiedBy *string `json:"lastModifiedBy,omitempty" azure:"ro"`
5838
5839	// READ-ONLY; The list of peered circuit connections associated with Azure Private Peering for this circuit.
5840	PeeredConnections []*PeerExpressRouteCircuitConnection `json:"peeredConnections,omitempty" azure:"ro"`
5841
5842	// READ-ONLY; The provisioning state of the express route circuit peering resource.
5843	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
5844}
5845
5846// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitPeeringPropertiesFormat.
5847func (e ExpressRouteCircuitPeeringPropertiesFormat) MarshalJSON() ([]byte, error) {
5848	objectMap := make(map[string]interface{})
5849	populate(objectMap, "azureASN", e.AzureASN)
5850	populate(objectMap, "connections", e.Connections)
5851	populate(objectMap, "expressRouteConnection", e.ExpressRouteConnection)
5852	populate(objectMap, "gatewayManagerEtag", e.GatewayManagerEtag)
5853	populate(objectMap, "ipv6PeeringConfig", e.IPv6PeeringConfig)
5854	populate(objectMap, "lastModifiedBy", e.LastModifiedBy)
5855	populate(objectMap, "microsoftPeeringConfig", e.MicrosoftPeeringConfig)
5856	populate(objectMap, "peerASN", e.PeerASN)
5857	populate(objectMap, "peeredConnections", e.PeeredConnections)
5858	populate(objectMap, "peeringType", e.PeeringType)
5859	populate(objectMap, "primaryAzurePort", e.PrimaryAzurePort)
5860	populate(objectMap, "primaryPeerAddressPrefix", e.PrimaryPeerAddressPrefix)
5861	populate(objectMap, "provisioningState", e.ProvisioningState)
5862	populate(objectMap, "routeFilter", e.RouteFilter)
5863	populate(objectMap, "secondaryAzurePort", e.SecondaryAzurePort)
5864	populate(objectMap, "secondaryPeerAddressPrefix", e.SecondaryPeerAddressPrefix)
5865	populate(objectMap, "sharedKey", e.SharedKey)
5866	populate(objectMap, "state", e.State)
5867	populate(objectMap, "stats", e.Stats)
5868	populate(objectMap, "vlanId", e.VlanID)
5869	return json.Marshal(objectMap)
5870}
5871
5872// ExpressRouteCircuitPeeringsBeginCreateOrUpdateOptions contains the optional parameters for the ExpressRouteCircuitPeerings.BeginCreateOrUpdate method.
5873type ExpressRouteCircuitPeeringsBeginCreateOrUpdateOptions struct {
5874	// placeholder for future optional parameters
5875}
5876
5877// ExpressRouteCircuitPeeringsBeginDeleteOptions contains the optional parameters for the ExpressRouteCircuitPeerings.BeginDelete method.
5878type ExpressRouteCircuitPeeringsBeginDeleteOptions struct {
5879	// placeholder for future optional parameters
5880}
5881
5882// ExpressRouteCircuitPeeringsGetOptions contains the optional parameters for the ExpressRouteCircuitPeerings.Get method.
5883type ExpressRouteCircuitPeeringsGetOptions struct {
5884	// placeholder for future optional parameters
5885}
5886
5887// ExpressRouteCircuitPeeringsListOptions contains the optional parameters for the ExpressRouteCircuitPeerings.List method.
5888type ExpressRouteCircuitPeeringsListOptions struct {
5889	// placeholder for future optional parameters
5890}
5891
5892// ExpressRouteCircuitPropertiesFormat - Properties of ExpressRouteCircuit.
5893type ExpressRouteCircuitPropertiesFormat struct {
5894	// Allow classic operations.
5895	AllowClassicOperations *bool `json:"allowClassicOperations,omitempty"`
5896
5897	// The list of authorizations.
5898	Authorizations []*ExpressRouteCircuitAuthorization `json:"authorizations,omitempty"`
5899
5900	// The bandwidth of the circuit when the circuit is provisioned on an ExpressRoutePort resource.
5901	BandwidthInGbps *float32 `json:"bandwidthInGbps,omitempty"`
5902
5903	// The CircuitProvisioningState state of the resource.
5904	CircuitProvisioningState *string `json:"circuitProvisioningState,omitempty"`
5905
5906	// The reference to the ExpressRoutePort resource when the circuit is provisioned on an ExpressRoutePort resource.
5907	ExpressRoutePort *SubResource `json:"expressRoutePort,omitempty"`
5908
5909	// The GatewayManager Etag.
5910	GatewayManagerEtag *string `json:"gatewayManagerEtag,omitempty"`
5911
5912	// Flag denoting global reach status.
5913	GlobalReachEnabled *bool `json:"globalReachEnabled,omitempty"`
5914
5915	// The list of peerings.
5916	Peerings []*ExpressRouteCircuitPeering `json:"peerings,omitempty"`
5917
5918	// The ServiceKey.
5919	ServiceKey *string `json:"serviceKey,omitempty"`
5920
5921	// The ServiceProviderNotes.
5922	ServiceProviderNotes *string `json:"serviceProviderNotes,omitempty"`
5923
5924	// The ServiceProviderProperties.
5925	ServiceProviderProperties *ExpressRouteCircuitServiceProviderProperties `json:"serviceProviderProperties,omitempty"`
5926
5927	// The ServiceProviderProvisioningState state of the resource.
5928	ServiceProviderProvisioningState *ServiceProviderProvisioningState `json:"serviceProviderProvisioningState,omitempty"`
5929
5930	// READ-ONLY; The provisioning state of the express route circuit resource.
5931	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
5932
5933	// READ-ONLY; The identifier of the circuit traffic. Outer tag for QinQ encapsulation.
5934	Stag *int32 `json:"stag,omitempty" azure:"ro"`
5935}
5936
5937// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitPropertiesFormat.
5938func (e ExpressRouteCircuitPropertiesFormat) MarshalJSON() ([]byte, error) {
5939	objectMap := make(map[string]interface{})
5940	populate(objectMap, "allowClassicOperations", e.AllowClassicOperations)
5941	populate(objectMap, "authorizations", e.Authorizations)
5942	populate(objectMap, "bandwidthInGbps", e.BandwidthInGbps)
5943	populate(objectMap, "circuitProvisioningState", e.CircuitProvisioningState)
5944	populate(objectMap, "expressRoutePort", e.ExpressRoutePort)
5945	populate(objectMap, "gatewayManagerEtag", e.GatewayManagerEtag)
5946	populate(objectMap, "globalReachEnabled", e.GlobalReachEnabled)
5947	populate(objectMap, "peerings", e.Peerings)
5948	populate(objectMap, "provisioningState", e.ProvisioningState)
5949	populate(objectMap, "serviceKey", e.ServiceKey)
5950	populate(objectMap, "serviceProviderNotes", e.ServiceProviderNotes)
5951	populate(objectMap, "serviceProviderProperties", e.ServiceProviderProperties)
5952	populate(objectMap, "serviceProviderProvisioningState", e.ServiceProviderProvisioningState)
5953	populate(objectMap, "stag", e.Stag)
5954	return json.Marshal(objectMap)
5955}
5956
5957// ExpressRouteCircuitReference - Reference to an express route circuit.
5958type ExpressRouteCircuitReference struct {
5959	// Corresponding Express Route Circuit Id.
5960	ID *string `json:"id,omitempty"`
5961}
5962
5963// ExpressRouteCircuitRoutesTable - The routes table associated with the ExpressRouteCircuit.
5964type ExpressRouteCircuitRoutesTable struct {
5965	// Local preference value as set with the set local-preference route-map configuration command.
5966	LocPrf *string `json:"locPrf,omitempty"`
5967
5968	// IP address of a network entity.
5969	Network *string `json:"network,omitempty"`
5970
5971	// NextHop address.
5972	NextHop *string `json:"nextHop,omitempty"`
5973
5974	// Autonomous system paths to the destination network.
5975	Path *string `json:"path,omitempty"`
5976
5977	// Route Weight.
5978	Weight *int32 `json:"weight,omitempty"`
5979}
5980
5981// ExpressRouteCircuitRoutesTableSummary - The routes table associated with the ExpressRouteCircuit.
5982type ExpressRouteCircuitRoutesTableSummary struct {
5983	// Autonomous system number.
5984	As *int32 `json:"as,omitempty"`
5985
5986	// IP address of the neighbor.
5987	Neighbor *string `json:"neighbor,omitempty"`
5988
5989	// Current state of the BGP session, and the number of prefixes that have been received from a neighbor or peer group.
5990	StatePfxRcd *string `json:"statePfxRcd,omitempty"`
5991
5992	// The length of time that the BGP session has been in the Established state, or the current status if not in the Established state.
5993	UpDown *string `json:"upDown,omitempty"`
5994
5995	// BGP version number spoken to the neighbor.
5996	V *int32 `json:"v,omitempty"`
5997}
5998
5999// ExpressRouteCircuitSKU - Contains SKU in an ExpressRouteCircuit.
6000type ExpressRouteCircuitSKU struct {
6001	// The family of the SKU.
6002	Family *ExpressRouteCircuitSKUFamily `json:"family,omitempty"`
6003
6004	// The name of the SKU.
6005	Name *string `json:"name,omitempty"`
6006
6007	// The tier of the SKU.
6008	Tier *ExpressRouteCircuitSKUTier `json:"tier,omitempty"`
6009}
6010
6011// ExpressRouteCircuitServiceProviderProperties - Contains ServiceProviderProperties in an ExpressRouteCircuit.
6012type ExpressRouteCircuitServiceProviderProperties struct {
6013	// The BandwidthInMbps.
6014	BandwidthInMbps *int32 `json:"bandwidthInMbps,omitempty"`
6015
6016	// The peering location.
6017	PeeringLocation *string `json:"peeringLocation,omitempty"`
6018
6019	// The serviceProviderName.
6020	ServiceProviderName *string `json:"serviceProviderName,omitempty"`
6021}
6022
6023// ExpressRouteCircuitStats - Contains stats associated with the peering.
6024type ExpressRouteCircuitStats struct {
6025	// The Primary BytesIn of the peering.
6026	PrimarybytesIn *int64 `json:"primarybytesIn,omitempty"`
6027
6028	// The primary BytesOut of the peering.
6029	PrimarybytesOut *int64 `json:"primarybytesOut,omitempty"`
6030
6031	// The secondary BytesIn of the peering.
6032	SecondarybytesIn *int64 `json:"secondarybytesIn,omitempty"`
6033
6034	// The secondary BytesOut of the peering.
6035	SecondarybytesOut *int64 `json:"secondarybytesOut,omitempty"`
6036}
6037
6038// ExpressRouteCircuitsArpTableListResult - Response for ListArpTable associated with the Express Route Circuits API.
6039type ExpressRouteCircuitsArpTableListResult struct {
6040	// The URL to get the next set of results.
6041	NextLink *string `json:"nextLink,omitempty"`
6042
6043	// A list of the ARP tables.
6044	Value []*ExpressRouteCircuitArpTable `json:"value,omitempty"`
6045}
6046
6047// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitsArpTableListResult.
6048func (e ExpressRouteCircuitsArpTableListResult) MarshalJSON() ([]byte, error) {
6049	objectMap := make(map[string]interface{})
6050	populate(objectMap, "nextLink", e.NextLink)
6051	populate(objectMap, "value", e.Value)
6052	return json.Marshal(objectMap)
6053}
6054
6055// ExpressRouteCircuitsBeginCreateOrUpdateOptions contains the optional parameters for the ExpressRouteCircuits.BeginCreateOrUpdate method.
6056type ExpressRouteCircuitsBeginCreateOrUpdateOptions struct {
6057	// placeholder for future optional parameters
6058}
6059
6060// ExpressRouteCircuitsBeginDeleteOptions contains the optional parameters for the ExpressRouteCircuits.BeginDelete method.
6061type ExpressRouteCircuitsBeginDeleteOptions struct {
6062	// placeholder for future optional parameters
6063}
6064
6065// ExpressRouteCircuitsBeginListArpTableOptions contains the optional parameters for the ExpressRouteCircuits.BeginListArpTable method.
6066type ExpressRouteCircuitsBeginListArpTableOptions struct {
6067	// placeholder for future optional parameters
6068}
6069
6070// ExpressRouteCircuitsBeginListRoutesTableOptions contains the optional parameters for the ExpressRouteCircuits.BeginListRoutesTable method.
6071type ExpressRouteCircuitsBeginListRoutesTableOptions struct {
6072	// placeholder for future optional parameters
6073}
6074
6075// ExpressRouteCircuitsBeginListRoutesTableSummaryOptions contains the optional parameters for the ExpressRouteCircuits.BeginListRoutesTableSummary method.
6076type ExpressRouteCircuitsBeginListRoutesTableSummaryOptions struct {
6077	// placeholder for future optional parameters
6078}
6079
6080// ExpressRouteCircuitsGetOptions contains the optional parameters for the ExpressRouteCircuits.Get method.
6081type ExpressRouteCircuitsGetOptions struct {
6082	// placeholder for future optional parameters
6083}
6084
6085// ExpressRouteCircuitsGetPeeringStatsOptions contains the optional parameters for the ExpressRouteCircuits.GetPeeringStats method.
6086type ExpressRouteCircuitsGetPeeringStatsOptions struct {
6087	// placeholder for future optional parameters
6088}
6089
6090// ExpressRouteCircuitsGetStatsOptions contains the optional parameters for the ExpressRouteCircuits.GetStats method.
6091type ExpressRouteCircuitsGetStatsOptions struct {
6092	// placeholder for future optional parameters
6093}
6094
6095// ExpressRouteCircuitsListAllOptions contains the optional parameters for the ExpressRouteCircuits.ListAll method.
6096type ExpressRouteCircuitsListAllOptions struct {
6097	// placeholder for future optional parameters
6098}
6099
6100// ExpressRouteCircuitsListOptions contains the optional parameters for the ExpressRouteCircuits.List method.
6101type ExpressRouteCircuitsListOptions struct {
6102	// placeholder for future optional parameters
6103}
6104
6105// ExpressRouteCircuitsRoutesTableListResult - Response for ListRoutesTable associated with the Express Route Circuits API.
6106type ExpressRouteCircuitsRoutesTableListResult struct {
6107	// The URL to get the next set of results.
6108	NextLink *string `json:"nextLink,omitempty"`
6109
6110	// The list of routes table.
6111	Value []*ExpressRouteCircuitRoutesTable `json:"value,omitempty"`
6112}
6113
6114// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitsRoutesTableListResult.
6115func (e ExpressRouteCircuitsRoutesTableListResult) MarshalJSON() ([]byte, error) {
6116	objectMap := make(map[string]interface{})
6117	populate(objectMap, "nextLink", e.NextLink)
6118	populate(objectMap, "value", e.Value)
6119	return json.Marshal(objectMap)
6120}
6121
6122// ExpressRouteCircuitsRoutesTableSummaryListResult - Response for ListRoutesTable associated with the Express Route Circuits API.
6123type ExpressRouteCircuitsRoutesTableSummaryListResult struct {
6124	// The URL to get the next set of results.
6125	NextLink *string `json:"nextLink,omitempty"`
6126
6127	// A list of the routes table.
6128	Value []*ExpressRouteCircuitRoutesTableSummary `json:"value,omitempty"`
6129}
6130
6131// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCircuitsRoutesTableSummaryListResult.
6132func (e ExpressRouteCircuitsRoutesTableSummaryListResult) MarshalJSON() ([]byte, error) {
6133	objectMap := make(map[string]interface{})
6134	populate(objectMap, "nextLink", e.NextLink)
6135	populate(objectMap, "value", e.Value)
6136	return json.Marshal(objectMap)
6137}
6138
6139// ExpressRouteCircuitsUpdateTagsOptions contains the optional parameters for the ExpressRouteCircuits.UpdateTags method.
6140type ExpressRouteCircuitsUpdateTagsOptions struct {
6141	// placeholder for future optional parameters
6142}
6143
6144// ExpressRouteConnection resource.
6145type ExpressRouteConnection struct {
6146	SubResource
6147	// REQUIRED; The name of the resource.
6148	Name *string `json:"name,omitempty"`
6149
6150	// Properties of the express route connection.
6151	Properties *ExpressRouteConnectionProperties `json:"properties,omitempty"`
6152}
6153
6154// MarshalJSON implements the json.Marshaller interface for type ExpressRouteConnection.
6155func (e ExpressRouteConnection) MarshalJSON() ([]byte, error) {
6156	objectMap := e.SubResource.marshalInternal()
6157	populate(objectMap, "name", e.Name)
6158	populate(objectMap, "properties", e.Properties)
6159	return json.Marshal(objectMap)
6160}
6161
6162// ExpressRouteConnectionID - The ID of the ExpressRouteConnection.
6163type ExpressRouteConnectionID struct {
6164	// READ-ONLY; The ID of the ExpressRouteConnection.
6165	ID *string `json:"id,omitempty" azure:"ro"`
6166}
6167
6168// ExpressRouteConnectionList - ExpressRouteConnection list.
6169type ExpressRouteConnectionList struct {
6170	// The list of ExpressRoute connections.
6171	Value []*ExpressRouteConnection `json:"value,omitempty"`
6172}
6173
6174// MarshalJSON implements the json.Marshaller interface for type ExpressRouteConnectionList.
6175func (e ExpressRouteConnectionList) MarshalJSON() ([]byte, error) {
6176	objectMap := make(map[string]interface{})
6177	populate(objectMap, "value", e.Value)
6178	return json.Marshal(objectMap)
6179}
6180
6181// ExpressRouteConnectionProperties - Properties of the ExpressRouteConnection subresource.
6182type ExpressRouteConnectionProperties struct {
6183	// REQUIRED; The ExpressRoute circuit peering.
6184	ExpressRouteCircuitPeering *ExpressRouteCircuitPeeringID `json:"expressRouteCircuitPeering,omitempty"`
6185
6186	// Authorization key to establish the connection.
6187	AuthorizationKey *string `json:"authorizationKey,omitempty"`
6188
6189	// Enable internet security.
6190	EnableInternetSecurity *bool `json:"enableInternetSecurity,omitempty"`
6191
6192	// Enable FastPath to vWan Firewall hub.
6193	ExpressRouteGatewayBypass *bool `json:"expressRouteGatewayBypass,omitempty"`
6194
6195	// The Routing Configuration indicating the associated and propagated route tables on this connection.
6196	RoutingConfiguration *RoutingConfiguration `json:"routingConfiguration,omitempty"`
6197
6198	// The routing weight associated to the connection.
6199	RoutingWeight *int32 `json:"routingWeight,omitempty"`
6200
6201	// READ-ONLY; The provisioning state of the express route connection resource.
6202	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
6203}
6204
6205// ExpressRouteConnectionsBeginCreateOrUpdateOptions contains the optional parameters for the ExpressRouteConnections.BeginCreateOrUpdate method.
6206type ExpressRouteConnectionsBeginCreateOrUpdateOptions struct {
6207	// placeholder for future optional parameters
6208}
6209
6210// ExpressRouteConnectionsBeginDeleteOptions contains the optional parameters for the ExpressRouteConnections.BeginDelete method.
6211type ExpressRouteConnectionsBeginDeleteOptions struct {
6212	// placeholder for future optional parameters
6213}
6214
6215// ExpressRouteConnectionsGetOptions contains the optional parameters for the ExpressRouteConnections.Get method.
6216type ExpressRouteConnectionsGetOptions struct {
6217	// placeholder for future optional parameters
6218}
6219
6220// ExpressRouteConnectionsListOptions contains the optional parameters for the ExpressRouteConnections.List method.
6221type ExpressRouteConnectionsListOptions struct {
6222	// placeholder for future optional parameters
6223}
6224
6225// ExpressRouteCrossConnection resource.
6226type ExpressRouteCrossConnection struct {
6227	Resource
6228	// Properties of the express route cross connection.
6229	Properties *ExpressRouteCrossConnectionProperties `json:"properties,omitempty"`
6230
6231	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
6232	Etag *string `json:"etag,omitempty" azure:"ro"`
6233}
6234
6235// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCrossConnection.
6236func (e ExpressRouteCrossConnection) MarshalJSON() ([]byte, error) {
6237	objectMap := e.Resource.marshalInternal()
6238	populate(objectMap, "etag", e.Etag)
6239	populate(objectMap, "properties", e.Properties)
6240	return json.Marshal(objectMap)
6241}
6242
6243// ExpressRouteCrossConnectionListResult - Response for ListExpressRouteCrossConnection API service call.
6244type ExpressRouteCrossConnectionListResult struct {
6245	// A list of ExpressRouteCrossConnection resources.
6246	Value []*ExpressRouteCrossConnection `json:"value,omitempty"`
6247
6248	// READ-ONLY; The URL to get the next set of results.
6249	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
6250}
6251
6252// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCrossConnectionListResult.
6253func (e ExpressRouteCrossConnectionListResult) MarshalJSON() ([]byte, error) {
6254	objectMap := make(map[string]interface{})
6255	populate(objectMap, "nextLink", e.NextLink)
6256	populate(objectMap, "value", e.Value)
6257	return json.Marshal(objectMap)
6258}
6259
6260// ExpressRouteCrossConnectionPeering - Peering in an ExpressRoute Cross Connection resource.
6261type ExpressRouteCrossConnectionPeering struct {
6262	SubResource
6263	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
6264	Name *string `json:"name,omitempty"`
6265
6266	// Properties of the express route cross connection peering.
6267	Properties *ExpressRouteCrossConnectionPeeringProperties `json:"properties,omitempty"`
6268
6269	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
6270	Etag *string `json:"etag,omitempty" azure:"ro"`
6271}
6272
6273// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCrossConnectionPeering.
6274func (e ExpressRouteCrossConnectionPeering) MarshalJSON() ([]byte, error) {
6275	objectMap := e.SubResource.marshalInternal()
6276	populate(objectMap, "etag", e.Etag)
6277	populate(objectMap, "name", e.Name)
6278	populate(objectMap, "properties", e.Properties)
6279	return json.Marshal(objectMap)
6280}
6281
6282// ExpressRouteCrossConnectionPeeringList - Response for ListPeering API service call retrieves all peerings that belong to an ExpressRouteCrossConnection.
6283type ExpressRouteCrossConnectionPeeringList struct {
6284	// The peerings in an express route cross connection.
6285	Value []*ExpressRouteCrossConnectionPeering `json:"value,omitempty"`
6286
6287	// READ-ONLY; The URL to get the next set of results.
6288	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
6289}
6290
6291// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCrossConnectionPeeringList.
6292func (e ExpressRouteCrossConnectionPeeringList) MarshalJSON() ([]byte, error) {
6293	objectMap := make(map[string]interface{})
6294	populate(objectMap, "nextLink", e.NextLink)
6295	populate(objectMap, "value", e.Value)
6296	return json.Marshal(objectMap)
6297}
6298
6299// ExpressRouteCrossConnectionPeeringProperties - Properties of express route cross connection peering.
6300type ExpressRouteCrossConnectionPeeringProperties struct {
6301	// The GatewayManager Etag.
6302	GatewayManagerEtag *string `json:"gatewayManagerEtag,omitempty"`
6303
6304	// The IPv6 peering configuration.
6305	IPv6PeeringConfig *IPv6ExpressRouteCircuitPeeringConfig `json:"ipv6PeeringConfig,omitempty"`
6306
6307	// The Microsoft peering configuration.
6308	MicrosoftPeeringConfig *ExpressRouteCircuitPeeringConfig `json:"microsoftPeeringConfig,omitempty"`
6309
6310	// The peer ASN.
6311	PeerASN *int64 `json:"peerASN,omitempty"`
6312
6313	// The peering type.
6314	PeeringType *ExpressRoutePeeringType `json:"peeringType,omitempty"`
6315
6316	// The primary address prefix.
6317	PrimaryPeerAddressPrefix *string `json:"primaryPeerAddressPrefix,omitempty"`
6318
6319	// The secondary address prefix.
6320	SecondaryPeerAddressPrefix *string `json:"secondaryPeerAddressPrefix,omitempty"`
6321
6322	// The shared key.
6323	SharedKey *string `json:"sharedKey,omitempty"`
6324
6325	// The peering state.
6326	State *ExpressRoutePeeringState `json:"state,omitempty"`
6327
6328	// The VLAN ID.
6329	VlanID *int32 `json:"vlanId,omitempty"`
6330
6331	// READ-ONLY; The Azure ASN.
6332	AzureASN *int32 `json:"azureASN,omitempty" azure:"ro"`
6333
6334	// READ-ONLY; Who was the last to modify the peering.
6335	LastModifiedBy *string `json:"lastModifiedBy,omitempty" azure:"ro"`
6336
6337	// READ-ONLY; The primary port.
6338	PrimaryAzurePort *string `json:"primaryAzurePort,omitempty" azure:"ro"`
6339
6340	// READ-ONLY; The provisioning state of the express route cross connection peering resource.
6341	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
6342
6343	// READ-ONLY; The secondary port.
6344	SecondaryAzurePort *string `json:"secondaryAzurePort,omitempty" azure:"ro"`
6345}
6346
6347// ExpressRouteCrossConnectionPeeringsBeginCreateOrUpdateOptions contains the optional parameters for the ExpressRouteCrossConnectionPeerings.BeginCreateOrUpdate
6348// method.
6349type ExpressRouteCrossConnectionPeeringsBeginCreateOrUpdateOptions struct {
6350	// placeholder for future optional parameters
6351}
6352
6353// ExpressRouteCrossConnectionPeeringsBeginDeleteOptions contains the optional parameters for the ExpressRouteCrossConnectionPeerings.BeginDelete method.
6354type ExpressRouteCrossConnectionPeeringsBeginDeleteOptions struct {
6355	// placeholder for future optional parameters
6356}
6357
6358// ExpressRouteCrossConnectionPeeringsGetOptions contains the optional parameters for the ExpressRouteCrossConnectionPeerings.Get method.
6359type ExpressRouteCrossConnectionPeeringsGetOptions struct {
6360	// placeholder for future optional parameters
6361}
6362
6363// ExpressRouteCrossConnectionPeeringsListOptions contains the optional parameters for the ExpressRouteCrossConnectionPeerings.List method.
6364type ExpressRouteCrossConnectionPeeringsListOptions struct {
6365	// placeholder for future optional parameters
6366}
6367
6368// ExpressRouteCrossConnectionProperties - Properties of ExpressRouteCrossConnection.
6369type ExpressRouteCrossConnectionProperties struct {
6370	// The ExpressRouteCircuit.
6371	ExpressRouteCircuit *ExpressRouteCircuitReference `json:"expressRouteCircuit,omitempty"`
6372
6373	// The list of peerings.
6374	Peerings []*ExpressRouteCrossConnectionPeering `json:"peerings,omitempty"`
6375
6376	// Additional read only notes set by the connectivity provider.
6377	ServiceProviderNotes *string `json:"serviceProviderNotes,omitempty"`
6378
6379	// The provisioning state of the circuit in the connectivity provider system.
6380	ServiceProviderProvisioningState *ServiceProviderProvisioningState `json:"serviceProviderProvisioningState,omitempty"`
6381
6382	// READ-ONLY; The circuit bandwidth In Mbps.
6383	BandwidthInMbps *int32 `json:"bandwidthInMbps,omitempty" azure:"ro"`
6384
6385	// READ-ONLY; The peering location of the ExpressRoute circuit.
6386	PeeringLocation *string `json:"peeringLocation,omitempty" azure:"ro"`
6387
6388	// READ-ONLY; The name of the primary port.
6389	PrimaryAzurePort *string `json:"primaryAzurePort,omitempty" azure:"ro"`
6390
6391	// READ-ONLY; The provisioning state of the express route cross connection resource.
6392	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
6393
6394	// READ-ONLY; The identifier of the circuit traffic.
6395	STag *int32 `json:"sTag,omitempty" azure:"ro"`
6396
6397	// READ-ONLY; The name of the secondary port.
6398	SecondaryAzurePort *string `json:"secondaryAzurePort,omitempty" azure:"ro"`
6399}
6400
6401// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCrossConnectionProperties.
6402func (e ExpressRouteCrossConnectionProperties) MarshalJSON() ([]byte, error) {
6403	objectMap := make(map[string]interface{})
6404	populate(objectMap, "bandwidthInMbps", e.BandwidthInMbps)
6405	populate(objectMap, "expressRouteCircuit", e.ExpressRouteCircuit)
6406	populate(objectMap, "peeringLocation", e.PeeringLocation)
6407	populate(objectMap, "peerings", e.Peerings)
6408	populate(objectMap, "primaryAzurePort", e.PrimaryAzurePort)
6409	populate(objectMap, "provisioningState", e.ProvisioningState)
6410	populate(objectMap, "sTag", e.STag)
6411	populate(objectMap, "secondaryAzurePort", e.SecondaryAzurePort)
6412	populate(objectMap, "serviceProviderNotes", e.ServiceProviderNotes)
6413	populate(objectMap, "serviceProviderProvisioningState", e.ServiceProviderProvisioningState)
6414	return json.Marshal(objectMap)
6415}
6416
6417// ExpressRouteCrossConnectionRoutesTableSummary - The routes table associated with the ExpressRouteCircuit.
6418type ExpressRouteCrossConnectionRoutesTableSummary struct {
6419	// Autonomous system number.
6420	Asn *int32 `json:"asn,omitempty"`
6421
6422	// IP address of Neighbor router.
6423	Neighbor *string `json:"neighbor,omitempty"`
6424
6425	// Current state of the BGP session, and the number of prefixes that have been received from a neighbor or peer group.
6426	StateOrPrefixesReceived *string `json:"stateOrPrefixesReceived,omitempty"`
6427
6428	// The length of time that the BGP session has been in the Established state, or the current status if not in the Established state.
6429	UpDown *string `json:"upDown,omitempty"`
6430}
6431
6432// ExpressRouteCrossConnectionsBeginCreateOrUpdateOptions contains the optional parameters for the ExpressRouteCrossConnections.BeginCreateOrUpdate method.
6433type ExpressRouteCrossConnectionsBeginCreateOrUpdateOptions struct {
6434	// placeholder for future optional parameters
6435}
6436
6437// ExpressRouteCrossConnectionsBeginListArpTableOptions contains the optional parameters for the ExpressRouteCrossConnections.BeginListArpTable method.
6438type ExpressRouteCrossConnectionsBeginListArpTableOptions struct {
6439	// placeholder for future optional parameters
6440}
6441
6442// ExpressRouteCrossConnectionsBeginListRoutesTableOptions contains the optional parameters for the ExpressRouteCrossConnections.BeginListRoutesTable method.
6443type ExpressRouteCrossConnectionsBeginListRoutesTableOptions struct {
6444	// placeholder for future optional parameters
6445}
6446
6447// ExpressRouteCrossConnectionsBeginListRoutesTableSummaryOptions contains the optional parameters for the ExpressRouteCrossConnections.BeginListRoutesTableSummary
6448// method.
6449type ExpressRouteCrossConnectionsBeginListRoutesTableSummaryOptions struct {
6450	// placeholder for future optional parameters
6451}
6452
6453// ExpressRouteCrossConnectionsGetOptions contains the optional parameters for the ExpressRouteCrossConnections.Get method.
6454type ExpressRouteCrossConnectionsGetOptions struct {
6455	// placeholder for future optional parameters
6456}
6457
6458// ExpressRouteCrossConnectionsListByResourceGroupOptions contains the optional parameters for the ExpressRouteCrossConnections.ListByResourceGroup method.
6459type ExpressRouteCrossConnectionsListByResourceGroupOptions struct {
6460	// placeholder for future optional parameters
6461}
6462
6463// ExpressRouteCrossConnectionsListOptions contains the optional parameters for the ExpressRouteCrossConnections.List method.
6464type ExpressRouteCrossConnectionsListOptions struct {
6465	// placeholder for future optional parameters
6466}
6467
6468// ExpressRouteCrossConnectionsRoutesTableSummaryListResult - Response for ListRoutesTable associated with the Express Route Cross Connections.
6469type ExpressRouteCrossConnectionsRoutesTableSummaryListResult struct {
6470	// A list of the routes table.
6471	Value []*ExpressRouteCrossConnectionRoutesTableSummary `json:"value,omitempty"`
6472
6473	// READ-ONLY; The URL to get the next set of results.
6474	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
6475}
6476
6477// MarshalJSON implements the json.Marshaller interface for type ExpressRouteCrossConnectionsRoutesTableSummaryListResult.
6478func (e ExpressRouteCrossConnectionsRoutesTableSummaryListResult) MarshalJSON() ([]byte, error) {
6479	objectMap := make(map[string]interface{})
6480	populate(objectMap, "nextLink", e.NextLink)
6481	populate(objectMap, "value", e.Value)
6482	return json.Marshal(objectMap)
6483}
6484
6485// ExpressRouteCrossConnectionsUpdateTagsOptions contains the optional parameters for the ExpressRouteCrossConnections.UpdateTags method.
6486type ExpressRouteCrossConnectionsUpdateTagsOptions struct {
6487	// placeholder for future optional parameters
6488}
6489
6490// ExpressRouteGateway - ExpressRoute gateway resource.
6491type ExpressRouteGateway struct {
6492	Resource
6493	// Properties of the express route gateway.
6494	Properties *ExpressRouteGatewayProperties `json:"properties,omitempty"`
6495
6496	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
6497	Etag *string `json:"etag,omitempty" azure:"ro"`
6498}
6499
6500// MarshalJSON implements the json.Marshaller interface for type ExpressRouteGateway.
6501func (e ExpressRouteGateway) MarshalJSON() ([]byte, error) {
6502	objectMap := e.Resource.marshalInternal()
6503	populate(objectMap, "etag", e.Etag)
6504	populate(objectMap, "properties", e.Properties)
6505	return json.Marshal(objectMap)
6506}
6507
6508// ExpressRouteGatewayList - List of ExpressRoute gateways.
6509type ExpressRouteGatewayList struct {
6510	// List of ExpressRoute gateways.
6511	Value []*ExpressRouteGateway `json:"value,omitempty"`
6512}
6513
6514// MarshalJSON implements the json.Marshaller interface for type ExpressRouteGatewayList.
6515func (e ExpressRouteGatewayList) MarshalJSON() ([]byte, error) {
6516	objectMap := make(map[string]interface{})
6517	populate(objectMap, "value", e.Value)
6518	return json.Marshal(objectMap)
6519}
6520
6521// ExpressRouteGatewayProperties - ExpressRoute gateway resource properties.
6522type ExpressRouteGatewayProperties struct {
6523	// REQUIRED; The Virtual Hub where the ExpressRoute gateway is or will be deployed.
6524	VirtualHub *VirtualHubID `json:"virtualHub,omitempty"`
6525
6526	// Configuration for auto scaling.
6527	AutoScaleConfiguration *ExpressRouteGatewayPropertiesAutoScaleConfiguration `json:"autoScaleConfiguration,omitempty"`
6528
6529	// READ-ONLY; List of ExpressRoute connections to the ExpressRoute gateway.
6530	ExpressRouteConnections []*ExpressRouteConnection `json:"expressRouteConnections,omitempty" azure:"ro"`
6531
6532	// READ-ONLY; The provisioning state of the express route gateway resource.
6533	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
6534}
6535
6536// MarshalJSON implements the json.Marshaller interface for type ExpressRouteGatewayProperties.
6537func (e ExpressRouteGatewayProperties) MarshalJSON() ([]byte, error) {
6538	objectMap := make(map[string]interface{})
6539	populate(objectMap, "autoScaleConfiguration", e.AutoScaleConfiguration)
6540	populate(objectMap, "expressRouteConnections", e.ExpressRouteConnections)
6541	populate(objectMap, "provisioningState", e.ProvisioningState)
6542	populate(objectMap, "virtualHub", e.VirtualHub)
6543	return json.Marshal(objectMap)
6544}
6545
6546// ExpressRouteGatewayPropertiesAutoScaleConfiguration - Configuration for auto scaling.
6547type ExpressRouteGatewayPropertiesAutoScaleConfiguration struct {
6548	// Minimum and maximum number of scale units to deploy.
6549	Bounds *ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds `json:"bounds,omitempty"`
6550}
6551
6552// ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds - Minimum and maximum number of scale units to deploy.
6553type ExpressRouteGatewayPropertiesAutoScaleConfigurationBounds struct {
6554	// Maximum number of scale units deployed for ExpressRoute gateway.
6555	Max *int32 `json:"max,omitempty"`
6556
6557	// Minimum number of scale units deployed for ExpressRoute gateway.
6558	Min *int32 `json:"min,omitempty"`
6559}
6560
6561// ExpressRouteGatewaysBeginCreateOrUpdateOptions contains the optional parameters for the ExpressRouteGateways.BeginCreateOrUpdate method.
6562type ExpressRouteGatewaysBeginCreateOrUpdateOptions struct {
6563	// placeholder for future optional parameters
6564}
6565
6566// ExpressRouteGatewaysBeginDeleteOptions contains the optional parameters for the ExpressRouteGateways.BeginDelete method.
6567type ExpressRouteGatewaysBeginDeleteOptions struct {
6568	// placeholder for future optional parameters
6569}
6570
6571// ExpressRouteGatewaysBeginUpdateTagsOptions contains the optional parameters for the ExpressRouteGateways.BeginUpdateTags method.
6572type ExpressRouteGatewaysBeginUpdateTagsOptions struct {
6573	// placeholder for future optional parameters
6574}
6575
6576// ExpressRouteGatewaysGetOptions contains the optional parameters for the ExpressRouteGateways.Get method.
6577type ExpressRouteGatewaysGetOptions struct {
6578	// placeholder for future optional parameters
6579}
6580
6581// ExpressRouteGatewaysListByResourceGroupOptions contains the optional parameters for the ExpressRouteGateways.ListByResourceGroup method.
6582type ExpressRouteGatewaysListByResourceGroupOptions struct {
6583	// placeholder for future optional parameters
6584}
6585
6586// ExpressRouteGatewaysListBySubscriptionOptions contains the optional parameters for the ExpressRouteGateways.ListBySubscription method.
6587type ExpressRouteGatewaysListBySubscriptionOptions struct {
6588	// placeholder for future optional parameters
6589}
6590
6591// ExpressRouteLink child resource definition.
6592type ExpressRouteLink struct {
6593	SubResource
6594	// Name of child port resource that is unique among child port resources of the parent.
6595	Name *string `json:"name,omitempty"`
6596
6597	// ExpressRouteLink properties.
6598	Properties *ExpressRouteLinkPropertiesFormat `json:"properties,omitempty"`
6599
6600	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
6601	Etag *string `json:"etag,omitempty" azure:"ro"`
6602}
6603
6604// MarshalJSON implements the json.Marshaller interface for type ExpressRouteLink.
6605func (e ExpressRouteLink) MarshalJSON() ([]byte, error) {
6606	objectMap := e.SubResource.marshalInternal()
6607	populate(objectMap, "etag", e.Etag)
6608	populate(objectMap, "name", e.Name)
6609	populate(objectMap, "properties", e.Properties)
6610	return json.Marshal(objectMap)
6611}
6612
6613// ExpressRouteLinkListResult - Response for ListExpressRouteLinks API service call.
6614type ExpressRouteLinkListResult struct {
6615	// The URL to get the next set of results.
6616	NextLink *string `json:"nextLink,omitempty"`
6617
6618	// The list of ExpressRouteLink sub-resources.
6619	Value []*ExpressRouteLink `json:"value,omitempty"`
6620}
6621
6622// MarshalJSON implements the json.Marshaller interface for type ExpressRouteLinkListResult.
6623func (e ExpressRouteLinkListResult) MarshalJSON() ([]byte, error) {
6624	objectMap := make(map[string]interface{})
6625	populate(objectMap, "nextLink", e.NextLink)
6626	populate(objectMap, "value", e.Value)
6627	return json.Marshal(objectMap)
6628}
6629
6630// ExpressRouteLinkMacSecConfig - ExpressRouteLink Mac Security Configuration.
6631type ExpressRouteLinkMacSecConfig struct {
6632	// Keyvault Secret Identifier URL containing Mac security CAK key.
6633	CakSecretIdentifier *string `json:"cakSecretIdentifier,omitempty"`
6634
6635	// Mac security cipher.
6636	Cipher *ExpressRouteLinkMacSecCipher `json:"cipher,omitempty"`
6637
6638	// Keyvault Secret Identifier URL containing Mac security CKN key.
6639	CknSecretIdentifier *string `json:"cknSecretIdentifier,omitempty"`
6640
6641	// Sci mode enabled/disabled.
6642	SciState *ExpressRouteLinkMacSecSciState `json:"sciState,omitempty"`
6643}
6644
6645// ExpressRouteLinkPropertiesFormat - Properties specific to ExpressRouteLink resources.
6646type ExpressRouteLinkPropertiesFormat struct {
6647	// Administrative state of the physical port.
6648	AdminState *ExpressRouteLinkAdminState `json:"adminState,omitempty"`
6649
6650	// MacSec configuration.
6651	MacSecConfig *ExpressRouteLinkMacSecConfig `json:"macSecConfig,omitempty"`
6652
6653	// READ-ONLY; Physical fiber port type.
6654	ConnectorType *ExpressRouteLinkConnectorType `json:"connectorType,omitempty" azure:"ro"`
6655
6656	// READ-ONLY; Name of Azure router interface.
6657	InterfaceName *string `json:"interfaceName,omitempty" azure:"ro"`
6658
6659	// READ-ONLY; Mapping between physical port to patch panel port.
6660	PatchPanelID *string `json:"patchPanelId,omitempty" azure:"ro"`
6661
6662	// READ-ONLY; The provisioning state of the express route link resource.
6663	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
6664
6665	// READ-ONLY; Mapping of physical patch panel to rack.
6666	RackID *string `json:"rackId,omitempty" azure:"ro"`
6667
6668	// READ-ONLY; Name of Azure router associated with physical port.
6669	RouterName *string `json:"routerName,omitempty" azure:"ro"`
6670}
6671
6672// ExpressRouteLinksGetOptions contains the optional parameters for the ExpressRouteLinks.Get method.
6673type ExpressRouteLinksGetOptions struct {
6674	// placeholder for future optional parameters
6675}
6676
6677// ExpressRouteLinksListOptions contains the optional parameters for the ExpressRouteLinks.List method.
6678type ExpressRouteLinksListOptions struct {
6679	// placeholder for future optional parameters
6680}
6681
6682// ExpressRoutePort resource definition.
6683type ExpressRoutePort struct {
6684	Resource
6685	// The identity of ExpressRoutePort, if configured.
6686	Identity *ManagedServiceIdentity `json:"identity,omitempty"`
6687
6688	// ExpressRoutePort properties.
6689	Properties *ExpressRoutePortPropertiesFormat `json:"properties,omitempty"`
6690
6691	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
6692	Etag *string `json:"etag,omitempty" azure:"ro"`
6693}
6694
6695// MarshalJSON implements the json.Marshaller interface for type ExpressRoutePort.
6696func (e ExpressRoutePort) MarshalJSON() ([]byte, error) {
6697	objectMap := e.Resource.marshalInternal()
6698	populate(objectMap, "etag", e.Etag)
6699	populate(objectMap, "identity", e.Identity)
6700	populate(objectMap, "properties", e.Properties)
6701	return json.Marshal(objectMap)
6702}
6703
6704// ExpressRoutePortListResult - Response for ListExpressRoutePorts API service call.
6705type ExpressRoutePortListResult struct {
6706	// The URL to get the next set of results.
6707	NextLink *string `json:"nextLink,omitempty"`
6708
6709	// A list of ExpressRoutePort resources.
6710	Value []*ExpressRoutePort `json:"value,omitempty"`
6711}
6712
6713// MarshalJSON implements the json.Marshaller interface for type ExpressRoutePortListResult.
6714func (e ExpressRoutePortListResult) MarshalJSON() ([]byte, error) {
6715	objectMap := make(map[string]interface{})
6716	populate(objectMap, "nextLink", e.NextLink)
6717	populate(objectMap, "value", e.Value)
6718	return json.Marshal(objectMap)
6719}
6720
6721// ExpressRoutePortPropertiesFormat - Properties specific to ExpressRoutePort resources.
6722type ExpressRoutePortPropertiesFormat struct {
6723	// Bandwidth of procured ports in Gbps.
6724	BandwidthInGbps *int32 `json:"bandwidthInGbps,omitempty"`
6725
6726	// Encapsulation method on physical ports.
6727	Encapsulation *ExpressRoutePortsEncapsulation `json:"encapsulation,omitempty"`
6728
6729	// The set of physical links of the ExpressRoutePort resource.
6730	Links []*ExpressRouteLink `json:"links,omitempty"`
6731
6732	// The name of the peering location that the ExpressRoutePort is mapped to physically.
6733	PeeringLocation *string `json:"peeringLocation,omitempty"`
6734
6735	// READ-ONLY; Date of the physical port allocation to be used in Letter of Authorization.
6736	AllocationDate *string `json:"allocationDate,omitempty" azure:"ro"`
6737
6738	// READ-ONLY; Reference the ExpressRoute circuit(s) that are provisioned on this ExpressRoutePort resource.
6739	Circuits []*SubResource `json:"circuits,omitempty" azure:"ro"`
6740
6741	// READ-ONLY; Ether type of the physical port.
6742	EtherType *string `json:"etherType,omitempty" azure:"ro"`
6743
6744	// READ-ONLY; Maximum transmission unit of the physical port pair(s).
6745	Mtu *string `json:"mtu,omitempty" azure:"ro"`
6746
6747	// READ-ONLY; Aggregate Gbps of associated circuit bandwidths.
6748	ProvisionedBandwidthInGbps *float32 `json:"provisionedBandwidthInGbps,omitempty" azure:"ro"`
6749
6750	// READ-ONLY; The provisioning state of the express route port resource.
6751	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
6752
6753	// READ-ONLY; The resource GUID property of the express route port resource.
6754	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
6755}
6756
6757// MarshalJSON implements the json.Marshaller interface for type ExpressRoutePortPropertiesFormat.
6758func (e ExpressRoutePortPropertiesFormat) MarshalJSON() ([]byte, error) {
6759	objectMap := make(map[string]interface{})
6760	populate(objectMap, "allocationDate", e.AllocationDate)
6761	populate(objectMap, "bandwidthInGbps", e.BandwidthInGbps)
6762	populate(objectMap, "circuits", e.Circuits)
6763	populate(objectMap, "encapsulation", e.Encapsulation)
6764	populate(objectMap, "etherType", e.EtherType)
6765	populate(objectMap, "links", e.Links)
6766	populate(objectMap, "mtu", e.Mtu)
6767	populate(objectMap, "peeringLocation", e.PeeringLocation)
6768	populate(objectMap, "provisionedBandwidthInGbps", e.ProvisionedBandwidthInGbps)
6769	populate(objectMap, "provisioningState", e.ProvisioningState)
6770	populate(objectMap, "resourceGuid", e.ResourceGUID)
6771	return json.Marshal(objectMap)
6772}
6773
6774// ExpressRoutePortsBeginCreateOrUpdateOptions contains the optional parameters for the ExpressRoutePorts.BeginCreateOrUpdate method.
6775type ExpressRoutePortsBeginCreateOrUpdateOptions struct {
6776	// placeholder for future optional parameters
6777}
6778
6779// ExpressRoutePortsBeginDeleteOptions contains the optional parameters for the ExpressRoutePorts.BeginDelete method.
6780type ExpressRoutePortsBeginDeleteOptions struct {
6781	// placeholder for future optional parameters
6782}
6783
6784// ExpressRoutePortsGenerateLOAOptions contains the optional parameters for the ExpressRoutePorts.GenerateLOA method.
6785type ExpressRoutePortsGenerateLOAOptions struct {
6786	// placeholder for future optional parameters
6787}
6788
6789// ExpressRoutePortsGetOptions contains the optional parameters for the ExpressRoutePorts.Get method.
6790type ExpressRoutePortsGetOptions struct {
6791	// placeholder for future optional parameters
6792}
6793
6794// ExpressRoutePortsListByResourceGroupOptions contains the optional parameters for the ExpressRoutePorts.ListByResourceGroup method.
6795type ExpressRoutePortsListByResourceGroupOptions struct {
6796	// placeholder for future optional parameters
6797}
6798
6799// ExpressRoutePortsListOptions contains the optional parameters for the ExpressRoutePorts.List method.
6800type ExpressRoutePortsListOptions struct {
6801	// placeholder for future optional parameters
6802}
6803
6804// ExpressRoutePortsLocation - Definition of the ExpressRoutePorts peering location resource.
6805type ExpressRoutePortsLocation struct {
6806	Resource
6807	// ExpressRoutePort peering location properties.
6808	Properties *ExpressRoutePortsLocationPropertiesFormat `json:"properties,omitempty"`
6809}
6810
6811// MarshalJSON implements the json.Marshaller interface for type ExpressRoutePortsLocation.
6812func (e ExpressRoutePortsLocation) MarshalJSON() ([]byte, error) {
6813	objectMap := e.Resource.marshalInternal()
6814	populate(objectMap, "properties", e.Properties)
6815	return json.Marshal(objectMap)
6816}
6817
6818// ExpressRoutePortsLocationBandwidths - Real-time inventory of available ExpressRoute port bandwidths.
6819type ExpressRoutePortsLocationBandwidths struct {
6820	// READ-ONLY; Bandwidth descriptive name.
6821	OfferName *string `json:"offerName,omitempty" azure:"ro"`
6822
6823	// READ-ONLY; Bandwidth value in Gbps.
6824	ValueInGbps *int32 `json:"valueInGbps,omitempty" azure:"ro"`
6825}
6826
6827// ExpressRoutePortsLocationListResult - Response for ListExpressRoutePortsLocations API service call.
6828type ExpressRoutePortsLocationListResult struct {
6829	// The URL to get the next set of results.
6830	NextLink *string `json:"nextLink,omitempty"`
6831
6832	// The list of all ExpressRoutePort peering locations.
6833	Value []*ExpressRoutePortsLocation `json:"value,omitempty"`
6834}
6835
6836// MarshalJSON implements the json.Marshaller interface for type ExpressRoutePortsLocationListResult.
6837func (e ExpressRoutePortsLocationListResult) MarshalJSON() ([]byte, error) {
6838	objectMap := make(map[string]interface{})
6839	populate(objectMap, "nextLink", e.NextLink)
6840	populate(objectMap, "value", e.Value)
6841	return json.Marshal(objectMap)
6842}
6843
6844// ExpressRoutePortsLocationPropertiesFormat - Properties specific to ExpressRoutePorts peering location resources.
6845type ExpressRoutePortsLocationPropertiesFormat struct {
6846	// The inventory of available ExpressRoutePort bandwidths.
6847	AvailableBandwidths []*ExpressRoutePortsLocationBandwidths `json:"availableBandwidths,omitempty"`
6848
6849	// READ-ONLY; Address of peering location.
6850	Address *string `json:"address,omitempty" azure:"ro"`
6851
6852	// READ-ONLY; Contact details of peering locations.
6853	Contact *string `json:"contact,omitempty" azure:"ro"`
6854
6855	// READ-ONLY; The provisioning state of the express route port location resource.
6856	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
6857}
6858
6859// MarshalJSON implements the json.Marshaller interface for type ExpressRoutePortsLocationPropertiesFormat.
6860func (e ExpressRoutePortsLocationPropertiesFormat) MarshalJSON() ([]byte, error) {
6861	objectMap := make(map[string]interface{})
6862	populate(objectMap, "address", e.Address)
6863	populate(objectMap, "availableBandwidths", e.AvailableBandwidths)
6864	populate(objectMap, "contact", e.Contact)
6865	populate(objectMap, "provisioningState", e.ProvisioningState)
6866	return json.Marshal(objectMap)
6867}
6868
6869// ExpressRoutePortsLocationsGetOptions contains the optional parameters for the ExpressRoutePortsLocations.Get method.
6870type ExpressRoutePortsLocationsGetOptions struct {
6871	// placeholder for future optional parameters
6872}
6873
6874// ExpressRoutePortsLocationsListOptions contains the optional parameters for the ExpressRoutePortsLocations.List method.
6875type ExpressRoutePortsLocationsListOptions struct {
6876	// placeholder for future optional parameters
6877}
6878
6879// ExpressRoutePortsUpdateTagsOptions contains the optional parameters for the ExpressRoutePorts.UpdateTags method.
6880type ExpressRoutePortsUpdateTagsOptions struct {
6881	// placeholder for future optional parameters
6882}
6883
6884// ExpressRouteServiceProvider - A ExpressRouteResourceProvider object.
6885type ExpressRouteServiceProvider struct {
6886	Resource
6887	// Properties of the express route service provider.
6888	Properties *ExpressRouteServiceProviderPropertiesFormat `json:"properties,omitempty"`
6889}
6890
6891// MarshalJSON implements the json.Marshaller interface for type ExpressRouteServiceProvider.
6892func (e ExpressRouteServiceProvider) MarshalJSON() ([]byte, error) {
6893	objectMap := e.Resource.marshalInternal()
6894	populate(objectMap, "properties", e.Properties)
6895	return json.Marshal(objectMap)
6896}
6897
6898// ExpressRouteServiceProviderBandwidthsOffered - Contains bandwidths offered in ExpressRouteServiceProvider resources.
6899type ExpressRouteServiceProviderBandwidthsOffered struct {
6900	// The OfferName.
6901	OfferName *string `json:"offerName,omitempty"`
6902
6903	// The ValueInMbps.
6904	ValueInMbps *int32 `json:"valueInMbps,omitempty"`
6905}
6906
6907// ExpressRouteServiceProviderListResult - Response for the ListExpressRouteServiceProvider API service call.
6908type ExpressRouteServiceProviderListResult struct {
6909	// The URL to get the next set of results.
6910	NextLink *string `json:"nextLink,omitempty"`
6911
6912	// A list of ExpressRouteResourceProvider resources.
6913	Value []*ExpressRouteServiceProvider `json:"value,omitempty"`
6914}
6915
6916// MarshalJSON implements the json.Marshaller interface for type ExpressRouteServiceProviderListResult.
6917func (e ExpressRouteServiceProviderListResult) MarshalJSON() ([]byte, error) {
6918	objectMap := make(map[string]interface{})
6919	populate(objectMap, "nextLink", e.NextLink)
6920	populate(objectMap, "value", e.Value)
6921	return json.Marshal(objectMap)
6922}
6923
6924// ExpressRouteServiceProviderPropertiesFormat - Properties of ExpressRouteServiceProvider.
6925type ExpressRouteServiceProviderPropertiesFormat struct {
6926	// A list of bandwidths offered.
6927	BandwidthsOffered []*ExpressRouteServiceProviderBandwidthsOffered `json:"bandwidthsOffered,omitempty"`
6928
6929	// A list of peering locations.
6930	PeeringLocations []*string `json:"peeringLocations,omitempty"`
6931
6932	// READ-ONLY; The provisioning state of the express route service provider resource.
6933	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
6934}
6935
6936// MarshalJSON implements the json.Marshaller interface for type ExpressRouteServiceProviderPropertiesFormat.
6937func (e ExpressRouteServiceProviderPropertiesFormat) MarshalJSON() ([]byte, error) {
6938	objectMap := make(map[string]interface{})
6939	populate(objectMap, "bandwidthsOffered", e.BandwidthsOffered)
6940	populate(objectMap, "peeringLocations", e.PeeringLocations)
6941	populate(objectMap, "provisioningState", e.ProvisioningState)
6942	return json.Marshal(objectMap)
6943}
6944
6945// ExpressRouteServiceProvidersListOptions contains the optional parameters for the ExpressRouteServiceProviders.List method.
6946type ExpressRouteServiceProvidersListOptions struct {
6947	// placeholder for future optional parameters
6948}
6949
6950// ExtendedLocation complex type.
6951type ExtendedLocation struct {
6952	// The name of the extended location.
6953	Name *string `json:"name,omitempty"`
6954
6955	// The type of the extended location.
6956	Type *ExtendedLocationTypes `json:"type,omitempty"`
6957}
6958
6959// FirewallPoliciesBeginCreateOrUpdateOptions contains the optional parameters for the FirewallPolicies.BeginCreateOrUpdate method.
6960type FirewallPoliciesBeginCreateOrUpdateOptions struct {
6961	// placeholder for future optional parameters
6962}
6963
6964// FirewallPoliciesBeginDeleteOptions contains the optional parameters for the FirewallPolicies.BeginDelete method.
6965type FirewallPoliciesBeginDeleteOptions struct {
6966	// placeholder for future optional parameters
6967}
6968
6969// FirewallPoliciesGetOptions contains the optional parameters for the FirewallPolicies.Get method.
6970type FirewallPoliciesGetOptions struct {
6971	// Expands referenced resources.
6972	Expand *string
6973}
6974
6975// FirewallPoliciesListAllOptions contains the optional parameters for the FirewallPolicies.ListAll method.
6976type FirewallPoliciesListAllOptions struct {
6977	// placeholder for future optional parameters
6978}
6979
6980// FirewallPoliciesListOptions contains the optional parameters for the FirewallPolicies.List method.
6981type FirewallPoliciesListOptions struct {
6982	// placeholder for future optional parameters
6983}
6984
6985// FirewallPolicy Resource.
6986type FirewallPolicy struct {
6987	Resource
6988	// The identity of the firewall policy.
6989	Identity *ManagedServiceIdentity `json:"identity,omitempty"`
6990
6991	// Properties of the firewall policy.
6992	Properties *FirewallPolicyPropertiesFormat `json:"properties,omitempty"`
6993
6994	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
6995	Etag *string `json:"etag,omitempty" azure:"ro"`
6996}
6997
6998// MarshalJSON implements the json.Marshaller interface for type FirewallPolicy.
6999func (f FirewallPolicy) MarshalJSON() ([]byte, error) {
7000	objectMap := f.Resource.marshalInternal()
7001	populate(objectMap, "etag", f.Etag)
7002	populate(objectMap, "identity", f.Identity)
7003	populate(objectMap, "properties", f.Properties)
7004	return json.Marshal(objectMap)
7005}
7006
7007// FirewallPolicyCertificateAuthority - Trusted Root certificates properties for tls.
7008type FirewallPolicyCertificateAuthority struct {
7009	// Secret Id of (base-64 encoded unencrypted pfx) 'Secret' or 'Certificate' object stored in KeyVault.
7010	KeyVaultSecretID *string `json:"keyVaultSecretId,omitempty"`
7011
7012	// Name of the CA certificate.
7013	Name *string `json:"name,omitempty"`
7014}
7015
7016// FirewallPolicyFilterRuleCollection - Firewall Policy Filter Rule Collection.
7017type FirewallPolicyFilterRuleCollection struct {
7018	FirewallPolicyRuleCollection
7019	// The action type of a Filter rule collection.
7020	Action *FirewallPolicyFilterRuleCollectionAction `json:"action,omitempty"`
7021
7022	// List of rules included in a rule collection.
7023	Rules []FirewallPolicyRuleClassification `json:"rules,omitempty"`
7024}
7025
7026// MarshalJSON implements the json.Marshaller interface for type FirewallPolicyFilterRuleCollection.
7027func (f FirewallPolicyFilterRuleCollection) MarshalJSON() ([]byte, error) {
7028	objectMap := f.FirewallPolicyRuleCollection.marshalInternal(FirewallPolicyRuleCollectionTypeFirewallPolicyFilterRuleCollection)
7029	populate(objectMap, "action", f.Action)
7030	populate(objectMap, "rules", f.Rules)
7031	return json.Marshal(objectMap)
7032}
7033
7034// UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyFilterRuleCollection.
7035func (f *FirewallPolicyFilterRuleCollection) UnmarshalJSON(data []byte) error {
7036	var rawMsg map[string]json.RawMessage
7037	if err := json.Unmarshal(data, &rawMsg); err != nil {
7038		return err
7039	}
7040	for key, val := range rawMsg {
7041		var err error
7042		switch key {
7043		case "action":
7044			err = unpopulate(val, &f.Action)
7045			delete(rawMsg, key)
7046		case "rules":
7047			f.Rules, err = unmarshalFirewallPolicyRuleClassificationArray(val)
7048			delete(rawMsg, key)
7049		}
7050		if err != nil {
7051			return err
7052		}
7053	}
7054	return f.FirewallPolicyRuleCollection.unmarshalInternal(rawMsg)
7055}
7056
7057// FirewallPolicyFilterRuleCollectionAction - Properties of the FirewallPolicyFilterRuleCollectionAction.
7058type FirewallPolicyFilterRuleCollectionAction struct {
7059	// The type of action.
7060	Type *FirewallPolicyFilterRuleCollectionActionType `json:"type,omitempty"`
7061}
7062
7063// FirewallPolicyInsights - Firewall Policy Insights.
7064type FirewallPolicyInsights struct {
7065	// A flag to indicate if the insights are enabled on the policy.
7066	IsEnabled *bool `json:"isEnabled,omitempty"`
7067
7068	// Workspaces needed to configure the Firewall Policy Insights.
7069	LogAnalyticsResources *FirewallPolicyLogAnalyticsResources `json:"logAnalyticsResources,omitempty"`
7070
7071	// Number of days the insights should be enabled on the policy.
7072	RetentionDays *int32 `json:"retentionDays,omitempty"`
7073}
7074
7075// FirewallPolicyIntrusionDetection - Configuration for intrusion detection mode and rules.
7076type FirewallPolicyIntrusionDetection struct {
7077	// Intrusion detection configuration properties.
7078	Configuration *FirewallPolicyIntrusionDetectionConfiguration `json:"configuration,omitempty"`
7079
7080	// Intrusion detection general state.
7081	Mode *FirewallPolicyIntrusionDetectionStateType `json:"mode,omitempty"`
7082}
7083
7084// FirewallPolicyIntrusionDetectionBypassTrafficSpecifications - Intrusion detection bypass traffic specification.
7085type FirewallPolicyIntrusionDetectionBypassTrafficSpecifications struct {
7086	// Description of the bypass traffic rule.
7087	Description *string `json:"description,omitempty"`
7088
7089	// List of destination IP addresses or ranges for this rule.
7090	DestinationAddresses []*string `json:"destinationAddresses,omitempty"`
7091
7092	// List of destination IpGroups for this rule.
7093	DestinationIPGroups []*string `json:"destinationIpGroups,omitempty"`
7094
7095	// List of destination ports or ranges.
7096	DestinationPorts []*string `json:"destinationPorts,omitempty"`
7097
7098	// Name of the bypass traffic rule.
7099	Name *string `json:"name,omitempty"`
7100
7101	// The rule bypass protocol.
7102	Protocol *FirewallPolicyIntrusionDetectionProtocol `json:"protocol,omitempty"`
7103
7104	// List of source IP addresses or ranges for this rule.
7105	SourceAddresses []*string `json:"sourceAddresses,omitempty"`
7106
7107	// List of source IpGroups for this rule.
7108	SourceIPGroups []*string `json:"sourceIpGroups,omitempty"`
7109}
7110
7111// MarshalJSON implements the json.Marshaller interface for type FirewallPolicyIntrusionDetectionBypassTrafficSpecifications.
7112func (f FirewallPolicyIntrusionDetectionBypassTrafficSpecifications) MarshalJSON() ([]byte, error) {
7113	objectMap := make(map[string]interface{})
7114	populate(objectMap, "description", f.Description)
7115	populate(objectMap, "destinationAddresses", f.DestinationAddresses)
7116	populate(objectMap, "destinationIpGroups", f.DestinationIPGroups)
7117	populate(objectMap, "destinationPorts", f.DestinationPorts)
7118	populate(objectMap, "name", f.Name)
7119	populate(objectMap, "protocol", f.Protocol)
7120	populate(objectMap, "sourceAddresses", f.SourceAddresses)
7121	populate(objectMap, "sourceIpGroups", f.SourceIPGroups)
7122	return json.Marshal(objectMap)
7123}
7124
7125// FirewallPolicyIntrusionDetectionConfiguration - The operation for configuring intrusion detection.
7126type FirewallPolicyIntrusionDetectionConfiguration struct {
7127	// List of rules for traffic to bypass.
7128	BypassTrafficSettings []*FirewallPolicyIntrusionDetectionBypassTrafficSpecifications `json:"bypassTrafficSettings,omitempty"`
7129
7130	// List of specific signatures states.
7131	SignatureOverrides []*FirewallPolicyIntrusionDetectionSignatureSpecification `json:"signatureOverrides,omitempty"`
7132}
7133
7134// MarshalJSON implements the json.Marshaller interface for type FirewallPolicyIntrusionDetectionConfiguration.
7135func (f FirewallPolicyIntrusionDetectionConfiguration) MarshalJSON() ([]byte, error) {
7136	objectMap := make(map[string]interface{})
7137	populate(objectMap, "bypassTrafficSettings", f.BypassTrafficSettings)
7138	populate(objectMap, "signatureOverrides", f.SignatureOverrides)
7139	return json.Marshal(objectMap)
7140}
7141
7142// FirewallPolicyIntrusionDetectionSignatureSpecification - Intrusion detection signatures specification states.
7143type FirewallPolicyIntrusionDetectionSignatureSpecification struct {
7144	// Signature id.
7145	ID *string `json:"id,omitempty"`
7146
7147	// The signature state.
7148	Mode *FirewallPolicyIntrusionDetectionStateType `json:"mode,omitempty"`
7149}
7150
7151// FirewallPolicyListResult - Response for ListFirewallPolicies API service call.
7152type FirewallPolicyListResult struct {
7153	// URL to get the next set of results.
7154	NextLink *string `json:"nextLink,omitempty"`
7155
7156	// List of Firewall Policies in a resource group.
7157	Value []*FirewallPolicy `json:"value,omitempty"`
7158}
7159
7160// MarshalJSON implements the json.Marshaller interface for type FirewallPolicyListResult.
7161func (f FirewallPolicyListResult) MarshalJSON() ([]byte, error) {
7162	objectMap := make(map[string]interface{})
7163	populate(objectMap, "nextLink", f.NextLink)
7164	populate(objectMap, "value", f.Value)
7165	return json.Marshal(objectMap)
7166}
7167
7168// FirewallPolicyLogAnalyticsResources - Log Analytics Resources for Firewall Policy Insights.
7169type FirewallPolicyLogAnalyticsResources struct {
7170	// The default workspace Id for Firewall Policy Insights.
7171	DefaultWorkspaceID *SubResource `json:"defaultWorkspaceId,omitempty"`
7172
7173	// List of workspaces for Firewall Policy Insights.
7174	Workspaces []*FirewallPolicyLogAnalyticsWorkspace `json:"workspaces,omitempty"`
7175}
7176
7177// MarshalJSON implements the json.Marshaller interface for type FirewallPolicyLogAnalyticsResources.
7178func (f FirewallPolicyLogAnalyticsResources) MarshalJSON() ([]byte, error) {
7179	objectMap := make(map[string]interface{})
7180	populate(objectMap, "defaultWorkspaceId", f.DefaultWorkspaceID)
7181	populate(objectMap, "workspaces", f.Workspaces)
7182	return json.Marshal(objectMap)
7183}
7184
7185// FirewallPolicyLogAnalyticsWorkspace - Log Analytics Workspace for Firewall Policy Insights.
7186type FirewallPolicyLogAnalyticsWorkspace struct {
7187	// Region to configure the Workspace.
7188	Region *string `json:"region,omitempty"`
7189
7190	// The workspace Id for Firewall Policy Insights.
7191	WorkspaceID *SubResource `json:"workspaceId,omitempty"`
7192}
7193
7194// FirewallPolicyNatRuleCollection - Firewall Policy NAT Rule Collection.
7195type FirewallPolicyNatRuleCollection struct {
7196	FirewallPolicyRuleCollection
7197	// The action type of a Nat rule collection.
7198	Action *FirewallPolicyNatRuleCollectionAction `json:"action,omitempty"`
7199
7200	// List of rules included in a rule collection.
7201	Rules []FirewallPolicyRuleClassification `json:"rules,omitempty"`
7202}
7203
7204// MarshalJSON implements the json.Marshaller interface for type FirewallPolicyNatRuleCollection.
7205func (f FirewallPolicyNatRuleCollection) MarshalJSON() ([]byte, error) {
7206	objectMap := f.FirewallPolicyRuleCollection.marshalInternal(FirewallPolicyRuleCollectionTypeFirewallPolicyNatRuleCollection)
7207	populate(objectMap, "action", f.Action)
7208	populate(objectMap, "rules", f.Rules)
7209	return json.Marshal(objectMap)
7210}
7211
7212// UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyNatRuleCollection.
7213func (f *FirewallPolicyNatRuleCollection) UnmarshalJSON(data []byte) error {
7214	var rawMsg map[string]json.RawMessage
7215	if err := json.Unmarshal(data, &rawMsg); err != nil {
7216		return err
7217	}
7218	for key, val := range rawMsg {
7219		var err error
7220		switch key {
7221		case "action":
7222			err = unpopulate(val, &f.Action)
7223			delete(rawMsg, key)
7224		case "rules":
7225			f.Rules, err = unmarshalFirewallPolicyRuleClassificationArray(val)
7226			delete(rawMsg, key)
7227		}
7228		if err != nil {
7229			return err
7230		}
7231	}
7232	return f.FirewallPolicyRuleCollection.unmarshalInternal(rawMsg)
7233}
7234
7235// FirewallPolicyNatRuleCollectionAction - Properties of the FirewallPolicyNatRuleCollectionAction.
7236type FirewallPolicyNatRuleCollectionAction struct {
7237	// The type of action.
7238	Type *FirewallPolicyNatRuleCollectionActionType `json:"type,omitempty"`
7239}
7240
7241// FirewallPolicyPropertiesFormat - Firewall Policy definition.
7242type FirewallPolicyPropertiesFormat struct {
7243	// The parent firewall policy from which rules are inherited.
7244	BasePolicy *SubResource `json:"basePolicy,omitempty"`
7245
7246	// DNS Proxy Settings definition.
7247	DNSSettings *DNSSettings `json:"dnsSettings,omitempty"`
7248
7249	// Insights on Firewall Policy.
7250	Insights *FirewallPolicyInsights `json:"insights,omitempty"`
7251
7252	// The configuration for Intrusion detection.
7253	IntrusionDetection *FirewallPolicyIntrusionDetection `json:"intrusionDetection,omitempty"`
7254
7255	// The Firewall Policy SKU.
7256	SKU *FirewallPolicySKU `json:"sku,omitempty"`
7257
7258	// The private IP addresses/IP ranges to which traffic will not be SNAT.
7259	Snat *FirewallPolicySNAT `json:"snat,omitempty"`
7260
7261	// The operation mode for Threat Intelligence.
7262	ThreatIntelMode *AzureFirewallThreatIntelMode `json:"threatIntelMode,omitempty"`
7263
7264	// ThreatIntel Whitelist for Firewall Policy.
7265	ThreatIntelWhitelist *FirewallPolicyThreatIntelWhitelist `json:"threatIntelWhitelist,omitempty"`
7266
7267	// TLS Configuration definition.
7268	TransportSecurity *FirewallPolicyTransportSecurity `json:"transportSecurity,omitempty"`
7269
7270	// READ-ONLY; List of references to Child Firewall Policies.
7271	ChildPolicies []*SubResource `json:"childPolicies,omitempty" azure:"ro"`
7272
7273	// READ-ONLY; List of references to Azure Firewalls that this Firewall Policy is associated with.
7274	Firewalls []*SubResource `json:"firewalls,omitempty" azure:"ro"`
7275
7276	// READ-ONLY; The provisioning state of the firewall policy resource.
7277	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
7278
7279	// READ-ONLY; List of references to FirewallPolicyRuleCollectionGroups.
7280	RuleCollectionGroups []*SubResource `json:"ruleCollectionGroups,omitempty" azure:"ro"`
7281}
7282
7283// MarshalJSON implements the json.Marshaller interface for type FirewallPolicyPropertiesFormat.
7284func (f FirewallPolicyPropertiesFormat) MarshalJSON() ([]byte, error) {
7285	objectMap := make(map[string]interface{})
7286	populate(objectMap, "basePolicy", f.BasePolicy)
7287	populate(objectMap, "childPolicies", f.ChildPolicies)
7288	populate(objectMap, "dnsSettings", f.DNSSettings)
7289	populate(objectMap, "firewalls", f.Firewalls)
7290	populate(objectMap, "insights", f.Insights)
7291	populate(objectMap, "intrusionDetection", f.IntrusionDetection)
7292	populate(objectMap, "provisioningState", f.ProvisioningState)
7293	populate(objectMap, "ruleCollectionGroups", f.RuleCollectionGroups)
7294	populate(objectMap, "sku", f.SKU)
7295	populate(objectMap, "snat", f.Snat)
7296	populate(objectMap, "threatIntelMode", f.ThreatIntelMode)
7297	populate(objectMap, "threatIntelWhitelist", f.ThreatIntelWhitelist)
7298	populate(objectMap, "transportSecurity", f.TransportSecurity)
7299	return json.Marshal(objectMap)
7300}
7301
7302// FirewallPolicyRuleClassification provides polymorphic access to related types.
7303// Call the interface's GetFirewallPolicyRule() method to access the common type.
7304// Use a type switch to determine the concrete type.  The possible types are:
7305// - *ApplicationRule, *FirewallPolicyRule, *NatRule, *NetworkRule
7306type FirewallPolicyRuleClassification interface {
7307	// GetFirewallPolicyRule returns the FirewallPolicyRule content of the underlying type.
7308	GetFirewallPolicyRule() *FirewallPolicyRule
7309}
7310
7311// FirewallPolicyRule - Properties of a rule.
7312type FirewallPolicyRule struct {
7313	// REQUIRED; Rule Type.
7314	RuleType *FirewallPolicyRuleType `json:"ruleType,omitempty"`
7315
7316	// Description of the rule.
7317	Description *string `json:"description,omitempty"`
7318
7319	// Name of the rule.
7320	Name *string `json:"name,omitempty"`
7321}
7322
7323// GetFirewallPolicyRule implements the FirewallPolicyRuleClassification interface for type FirewallPolicyRule.
7324func (f *FirewallPolicyRule) GetFirewallPolicyRule() *FirewallPolicyRule { return f }
7325
7326// UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyRule.
7327func (f *FirewallPolicyRule) UnmarshalJSON(data []byte) error {
7328	var rawMsg map[string]json.RawMessage
7329	if err := json.Unmarshal(data, &rawMsg); err != nil {
7330		return err
7331	}
7332	return f.unmarshalInternal(rawMsg)
7333}
7334
7335func (f FirewallPolicyRule) marshalInternal(discValue FirewallPolicyRuleType) map[string]interface{} {
7336	objectMap := make(map[string]interface{})
7337	populate(objectMap, "description", f.Description)
7338	populate(objectMap, "name", f.Name)
7339	f.RuleType = &discValue
7340	objectMap["ruleType"] = f.RuleType
7341	return objectMap
7342}
7343
7344func (f *FirewallPolicyRule) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
7345	for key, val := range rawMsg {
7346		var err error
7347		switch key {
7348		case "description":
7349			err = unpopulate(val, &f.Description)
7350			delete(rawMsg, key)
7351		case "name":
7352			err = unpopulate(val, &f.Name)
7353			delete(rawMsg, key)
7354		case "ruleType":
7355			err = unpopulate(val, &f.RuleType)
7356			delete(rawMsg, key)
7357		}
7358		if err != nil {
7359			return err
7360		}
7361	}
7362	return nil
7363}
7364
7365// FirewallPolicyRuleApplicationProtocol - Properties of the application rule protocol.
7366type FirewallPolicyRuleApplicationProtocol struct {
7367	// Port number for the protocol, cannot be greater than 64000.
7368	Port *int32 `json:"port,omitempty"`
7369
7370	// Protocol type.
7371	ProtocolType *FirewallPolicyRuleApplicationProtocolType `json:"protocolType,omitempty"`
7372}
7373
7374// FirewallPolicyRuleCollectionClassification provides polymorphic access to related types.
7375// Call the interface's GetFirewallPolicyRuleCollection() method to access the common type.
7376// Use a type switch to determine the concrete type.  The possible types are:
7377// - *FirewallPolicyFilterRuleCollection, *FirewallPolicyNatRuleCollection, *FirewallPolicyRuleCollection
7378type FirewallPolicyRuleCollectionClassification interface {
7379	// GetFirewallPolicyRuleCollection returns the FirewallPolicyRuleCollection content of the underlying type.
7380	GetFirewallPolicyRuleCollection() *FirewallPolicyRuleCollection
7381}
7382
7383// FirewallPolicyRuleCollection - Properties of the rule collection.
7384type FirewallPolicyRuleCollection struct {
7385	// REQUIRED; The type of the rule collection.
7386	RuleCollectionType *FirewallPolicyRuleCollectionType `json:"ruleCollectionType,omitempty"`
7387
7388	// The name of the rule collection.
7389	Name *string `json:"name,omitempty"`
7390
7391	// Priority of the Firewall Policy Rule Collection resource.
7392	Priority *int32 `json:"priority,omitempty"`
7393}
7394
7395// GetFirewallPolicyRuleCollection implements the FirewallPolicyRuleCollectionClassification interface for type FirewallPolicyRuleCollection.
7396func (f *FirewallPolicyRuleCollection) GetFirewallPolicyRuleCollection() *FirewallPolicyRuleCollection {
7397	return f
7398}
7399
7400// UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyRuleCollection.
7401func (f *FirewallPolicyRuleCollection) UnmarshalJSON(data []byte) error {
7402	var rawMsg map[string]json.RawMessage
7403	if err := json.Unmarshal(data, &rawMsg); err != nil {
7404		return err
7405	}
7406	return f.unmarshalInternal(rawMsg)
7407}
7408
7409func (f FirewallPolicyRuleCollection) marshalInternal(discValue FirewallPolicyRuleCollectionType) map[string]interface{} {
7410	objectMap := make(map[string]interface{})
7411	populate(objectMap, "name", f.Name)
7412	populate(objectMap, "priority", f.Priority)
7413	f.RuleCollectionType = &discValue
7414	objectMap["ruleCollectionType"] = f.RuleCollectionType
7415	return objectMap
7416}
7417
7418func (f *FirewallPolicyRuleCollection) unmarshalInternal(rawMsg map[string]json.RawMessage) error {
7419	for key, val := range rawMsg {
7420		var err error
7421		switch key {
7422		case "name":
7423			err = unpopulate(val, &f.Name)
7424			delete(rawMsg, key)
7425		case "priority":
7426			err = unpopulate(val, &f.Priority)
7427			delete(rawMsg, key)
7428		case "ruleCollectionType":
7429			err = unpopulate(val, &f.RuleCollectionType)
7430			delete(rawMsg, key)
7431		}
7432		if err != nil {
7433			return err
7434		}
7435	}
7436	return nil
7437}
7438
7439// FirewallPolicyRuleCollectionGroup - Rule Collection Group resource.
7440type FirewallPolicyRuleCollectionGroup struct {
7441	SubResource
7442	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
7443	Name *string `json:"name,omitempty"`
7444
7445	// The properties of the firewall policy rule collection group.
7446	Properties *FirewallPolicyRuleCollectionGroupProperties `json:"properties,omitempty"`
7447
7448	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
7449	Etag *string `json:"etag,omitempty" azure:"ro"`
7450
7451	// READ-ONLY; Rule Group type.
7452	Type *string `json:"type,omitempty" azure:"ro"`
7453}
7454
7455// MarshalJSON implements the json.Marshaller interface for type FirewallPolicyRuleCollectionGroup.
7456func (f FirewallPolicyRuleCollectionGroup) MarshalJSON() ([]byte, error) {
7457	objectMap := f.SubResource.marshalInternal()
7458	populate(objectMap, "etag", f.Etag)
7459	populate(objectMap, "name", f.Name)
7460	populate(objectMap, "properties", f.Properties)
7461	populate(objectMap, "type", f.Type)
7462	return json.Marshal(objectMap)
7463}
7464
7465// FirewallPolicyRuleCollectionGroupListResult - Response for ListFirewallPolicyRuleCollectionGroups API service call.
7466type FirewallPolicyRuleCollectionGroupListResult struct {
7467	// URL to get the next set of results.
7468	NextLink *string `json:"nextLink,omitempty"`
7469
7470	// List of FirewallPolicyRuleCollectionGroups in a FirewallPolicy.
7471	Value []*FirewallPolicyRuleCollectionGroup `json:"value,omitempty"`
7472}
7473
7474// MarshalJSON implements the json.Marshaller interface for type FirewallPolicyRuleCollectionGroupListResult.
7475func (f FirewallPolicyRuleCollectionGroupListResult) MarshalJSON() ([]byte, error) {
7476	objectMap := make(map[string]interface{})
7477	populate(objectMap, "nextLink", f.NextLink)
7478	populate(objectMap, "value", f.Value)
7479	return json.Marshal(objectMap)
7480}
7481
7482// FirewallPolicyRuleCollectionGroupProperties - Properties of the rule collection group.
7483type FirewallPolicyRuleCollectionGroupProperties struct {
7484	// Priority of the Firewall Policy Rule Collection Group resource.
7485	Priority *int32 `json:"priority,omitempty"`
7486
7487	// Group of Firewall Policy rule collections.
7488	RuleCollections []FirewallPolicyRuleCollectionClassification `json:"ruleCollections,omitempty"`
7489
7490	// READ-ONLY; The provisioning state of the firewall policy rule collection group resource.
7491	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
7492}
7493
7494// MarshalJSON implements the json.Marshaller interface for type FirewallPolicyRuleCollectionGroupProperties.
7495func (f FirewallPolicyRuleCollectionGroupProperties) MarshalJSON() ([]byte, error) {
7496	objectMap := make(map[string]interface{})
7497	populate(objectMap, "priority", f.Priority)
7498	populate(objectMap, "provisioningState", f.ProvisioningState)
7499	populate(objectMap, "ruleCollections", f.RuleCollections)
7500	return json.Marshal(objectMap)
7501}
7502
7503// UnmarshalJSON implements the json.Unmarshaller interface for type FirewallPolicyRuleCollectionGroupProperties.
7504func (f *FirewallPolicyRuleCollectionGroupProperties) UnmarshalJSON(data []byte) error {
7505	var rawMsg map[string]json.RawMessage
7506	if err := json.Unmarshal(data, &rawMsg); err != nil {
7507		return err
7508	}
7509	for key, val := range rawMsg {
7510		var err error
7511		switch key {
7512		case "priority":
7513			err = unpopulate(val, &f.Priority)
7514			delete(rawMsg, key)
7515		case "provisioningState":
7516			err = unpopulate(val, &f.ProvisioningState)
7517			delete(rawMsg, key)
7518		case "ruleCollections":
7519			f.RuleCollections, err = unmarshalFirewallPolicyRuleCollectionClassificationArray(val)
7520			delete(rawMsg, key)
7521		}
7522		if err != nil {
7523			return err
7524		}
7525	}
7526	return nil
7527}
7528
7529// FirewallPolicyRuleCollectionGroupsBeginCreateOrUpdateOptions contains the optional parameters for the FirewallPolicyRuleCollectionGroups.BeginCreateOrUpdate
7530// method.
7531type FirewallPolicyRuleCollectionGroupsBeginCreateOrUpdateOptions struct {
7532	// placeholder for future optional parameters
7533}
7534
7535// FirewallPolicyRuleCollectionGroupsBeginDeleteOptions contains the optional parameters for the FirewallPolicyRuleCollectionGroups.BeginDelete method.
7536type FirewallPolicyRuleCollectionGroupsBeginDeleteOptions struct {
7537	// placeholder for future optional parameters
7538}
7539
7540// FirewallPolicyRuleCollectionGroupsGetOptions contains the optional parameters for the FirewallPolicyRuleCollectionGroups.Get method.
7541type FirewallPolicyRuleCollectionGroupsGetOptions struct {
7542	// placeholder for future optional parameters
7543}
7544
7545// FirewallPolicyRuleCollectionGroupsListOptions contains the optional parameters for the FirewallPolicyRuleCollectionGroups.List method.
7546type FirewallPolicyRuleCollectionGroupsListOptions struct {
7547	// placeholder for future optional parameters
7548}
7549
7550// FirewallPolicySKU - SKU of Firewall policy.
7551type FirewallPolicySKU struct {
7552	// Tier of Firewall Policy.
7553	Tier *FirewallPolicySKUTier `json:"tier,omitempty"`
7554}
7555
7556// FirewallPolicySNAT - The private IP addresses/IP ranges to which traffic will not be SNAT.
7557type FirewallPolicySNAT struct {
7558	// List of private IP addresses/IP address ranges to not be SNAT.
7559	PrivateRanges []*string `json:"privateRanges,omitempty"`
7560}
7561
7562// MarshalJSON implements the json.Marshaller interface for type FirewallPolicySNAT.
7563func (f FirewallPolicySNAT) MarshalJSON() ([]byte, error) {
7564	objectMap := make(map[string]interface{})
7565	populate(objectMap, "privateRanges", f.PrivateRanges)
7566	return json.Marshal(objectMap)
7567}
7568
7569// FirewallPolicyThreatIntelWhitelist - ThreatIntel Whitelist for Firewall Policy.
7570type FirewallPolicyThreatIntelWhitelist struct {
7571	// List of FQDNs for the ThreatIntel Whitelist.
7572	Fqdns []*string `json:"fqdns,omitempty"`
7573
7574	// List of IP addresses for the ThreatIntel Whitelist.
7575	IPAddresses []*string `json:"ipAddresses,omitempty"`
7576}
7577
7578// MarshalJSON implements the json.Marshaller interface for type FirewallPolicyThreatIntelWhitelist.
7579func (f FirewallPolicyThreatIntelWhitelist) MarshalJSON() ([]byte, error) {
7580	objectMap := make(map[string]interface{})
7581	populate(objectMap, "fqdns", f.Fqdns)
7582	populate(objectMap, "ipAddresses", f.IPAddresses)
7583	return json.Marshal(objectMap)
7584}
7585
7586// FirewallPolicyTransportSecurity - Configuration needed to perform TLS termination & initiation.
7587type FirewallPolicyTransportSecurity struct {
7588	// The CA used for intermediate CA generation.
7589	CertificateAuthority *FirewallPolicyCertificateAuthority `json:"certificateAuthority,omitempty"`
7590}
7591
7592// FlowLog - A flow log resource.
7593type FlowLog struct {
7594	Resource
7595	// Properties of the flow log.
7596	Properties *FlowLogPropertiesFormat `json:"properties,omitempty"`
7597
7598	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
7599	Etag *string `json:"etag,omitempty" azure:"ro"`
7600}
7601
7602// MarshalJSON implements the json.Marshaller interface for type FlowLog.
7603func (f FlowLog) MarshalJSON() ([]byte, error) {
7604	objectMap := f.Resource.marshalInternal()
7605	populate(objectMap, "etag", f.Etag)
7606	populate(objectMap, "properties", f.Properties)
7607	return json.Marshal(objectMap)
7608}
7609
7610// FlowLogFormatParameters - Parameters that define the flow log format.
7611type FlowLogFormatParameters struct {
7612	// The file type of flow log.
7613	Type *FlowLogFormatType `json:"type,omitempty"`
7614
7615	// The version (revision) of the flow log.
7616	Version *int32 `json:"version,omitempty"`
7617}
7618
7619// FlowLogInformation - Information on the configuration of flow log and traffic analytics (optional) .
7620type FlowLogInformation struct {
7621	// REQUIRED; Properties of the flow log.
7622	Properties *FlowLogProperties `json:"properties,omitempty"`
7623
7624	// REQUIRED; The ID of the resource to configure for flow log and traffic analytics (optional) .
7625	TargetResourceID *string `json:"targetResourceId,omitempty"`
7626
7627	// Parameters that define the configuration of traffic analytics.
7628	FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"`
7629}
7630
7631// FlowLogListResult - List of flow logs.
7632type FlowLogListResult struct {
7633	// Information about flow log resource.
7634	Value []*FlowLog `json:"value,omitempty"`
7635
7636	// READ-ONLY; The URL to get the next set of results.
7637	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
7638}
7639
7640// MarshalJSON implements the json.Marshaller interface for type FlowLogListResult.
7641func (f FlowLogListResult) MarshalJSON() ([]byte, error) {
7642	objectMap := make(map[string]interface{})
7643	populate(objectMap, "nextLink", f.NextLink)
7644	populate(objectMap, "value", f.Value)
7645	return json.Marshal(objectMap)
7646}
7647
7648// FlowLogProperties - Parameters that define the configuration of flow log.
7649type FlowLogProperties struct {
7650	// REQUIRED; Flag to enable/disable flow logging.
7651	Enabled *bool `json:"enabled,omitempty"`
7652
7653	// REQUIRED; ID of the storage account which is used to store the flow log.
7654	StorageID *string `json:"storageId,omitempty"`
7655
7656	// Parameters that define the flow log format.
7657	Format *FlowLogFormatParameters `json:"format,omitempty"`
7658
7659	// Parameters that define the retention policy for flow log.
7660	RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"`
7661}
7662
7663// FlowLogPropertiesFormat - Parameters that define the configuration of flow log.
7664type FlowLogPropertiesFormat struct {
7665	// REQUIRED; ID of the storage account which is used to store the flow log.
7666	StorageID *string `json:"storageId,omitempty"`
7667
7668	// REQUIRED; ID of network security group to which flow log will be applied.
7669	TargetResourceID *string `json:"targetResourceId,omitempty"`
7670
7671	// Flag to enable/disable flow logging.
7672	Enabled *bool `json:"enabled,omitempty"`
7673
7674	// Parameters that define the configuration of traffic analytics.
7675	FlowAnalyticsConfiguration *TrafficAnalyticsProperties `json:"flowAnalyticsConfiguration,omitempty"`
7676
7677	// Parameters that define the flow log format.
7678	Format *FlowLogFormatParameters `json:"format,omitempty"`
7679
7680	// Parameters that define the retention policy for flow log.
7681	RetentionPolicy *RetentionPolicyParameters `json:"retentionPolicy,omitempty"`
7682
7683	// READ-ONLY; The provisioning state of the flow log.
7684	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
7685
7686	// READ-ONLY; Guid of network security group to which flow log will be applied.
7687	TargetResourceGUID *string `json:"targetResourceGuid,omitempty" azure:"ro"`
7688}
7689
7690// FlowLogStatusParameters - Parameters that define a resource to query flow log and traffic analytics (optional) status.
7691type FlowLogStatusParameters struct {
7692	// REQUIRED; The target resource where getting the flow log and traffic analytics (optional) status.
7693	TargetResourceID *string `json:"targetResourceId,omitempty"`
7694}
7695
7696// FlowLogsBeginCreateOrUpdateOptions contains the optional parameters for the FlowLogs.BeginCreateOrUpdate method.
7697type FlowLogsBeginCreateOrUpdateOptions struct {
7698	// placeholder for future optional parameters
7699}
7700
7701// FlowLogsBeginDeleteOptions contains the optional parameters for the FlowLogs.BeginDelete method.
7702type FlowLogsBeginDeleteOptions struct {
7703	// placeholder for future optional parameters
7704}
7705
7706// FlowLogsGetOptions contains the optional parameters for the FlowLogs.Get method.
7707type FlowLogsGetOptions struct {
7708	// placeholder for future optional parameters
7709}
7710
7711// FlowLogsListOptions contains the optional parameters for the FlowLogs.List method.
7712type FlowLogsListOptions struct {
7713	// placeholder for future optional parameters
7714}
7715
7716// FlowLogsUpdateTagsOptions contains the optional parameters for the FlowLogs.UpdateTags method.
7717type FlowLogsUpdateTagsOptions struct {
7718	// placeholder for future optional parameters
7719}
7720
7721// FrontendIPConfiguration - Frontend IP address of the load balancer.
7722type FrontendIPConfiguration struct {
7723	SubResource
7724	// The name of the resource that is unique within the set of frontend IP configurations used by the load balancer. This name can be used to access the resource.
7725	Name *string `json:"name,omitempty"`
7726
7727	// Properties of the load balancer probe.
7728	Properties *FrontendIPConfigurationPropertiesFormat `json:"properties,omitempty"`
7729
7730	// A list of availability zones denoting the IP allocated for the resource needs to come from.
7731	Zones []*string `json:"zones,omitempty"`
7732
7733	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
7734	Etag *string `json:"etag,omitempty" azure:"ro"`
7735
7736	// READ-ONLY; Type of the resource.
7737	Type *string `json:"type,omitempty" azure:"ro"`
7738}
7739
7740// MarshalJSON implements the json.Marshaller interface for type FrontendIPConfiguration.
7741func (f FrontendIPConfiguration) MarshalJSON() ([]byte, error) {
7742	objectMap := f.SubResource.marshalInternal()
7743	populate(objectMap, "etag", f.Etag)
7744	populate(objectMap, "name", f.Name)
7745	populate(objectMap, "properties", f.Properties)
7746	populate(objectMap, "type", f.Type)
7747	populate(objectMap, "zones", f.Zones)
7748	return json.Marshal(objectMap)
7749}
7750
7751// FrontendIPConfigurationPropertiesFormat - Properties of Frontend IP Configuration of the load balancer.
7752type FrontendIPConfigurationPropertiesFormat struct {
7753	// The reference to gateway load balancer frontend IP.
7754	GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"`
7755
7756	// The private IP address of the IP configuration.
7757	PrivateIPAddress *string `json:"privateIPAddress,omitempty"`
7758
7759	// Whether the specific ipconfiguration is IPv4 or IPv6. Default is taken as IPv4.
7760	PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"`
7761
7762	// The Private IP allocation method.
7763	PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"`
7764
7765	// The reference to the Public IP resource.
7766	PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"`
7767
7768	// The reference to the Public IP Prefix resource.
7769	PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"`
7770
7771	// The reference to the subnet resource.
7772	Subnet *Subnet `json:"subnet,omitempty"`
7773
7774	// READ-ONLY; An array of references to inbound pools that use this frontend IP.
7775	InboundNatPools []*SubResource `json:"inboundNatPools,omitempty" azure:"ro"`
7776
7777	// READ-ONLY; An array of references to inbound rules that use this frontend IP.
7778	InboundNatRules []*SubResource `json:"inboundNatRules,omitempty" azure:"ro"`
7779
7780	// READ-ONLY; An array of references to load balancing rules that use this frontend IP.
7781	LoadBalancingRules []*SubResource `json:"loadBalancingRules,omitempty" azure:"ro"`
7782
7783	// READ-ONLY; An array of references to outbound rules that use this frontend IP.
7784	OutboundRules []*SubResource `json:"outboundRules,omitempty" azure:"ro"`
7785
7786	// READ-ONLY; The provisioning state of the frontend IP configuration resource.
7787	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
7788}
7789
7790// MarshalJSON implements the json.Marshaller interface for type FrontendIPConfigurationPropertiesFormat.
7791func (f FrontendIPConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
7792	objectMap := make(map[string]interface{})
7793	populate(objectMap, "gatewayLoadBalancer", f.GatewayLoadBalancer)
7794	populate(objectMap, "inboundNatPools", f.InboundNatPools)
7795	populate(objectMap, "inboundNatRules", f.InboundNatRules)
7796	populate(objectMap, "loadBalancingRules", f.LoadBalancingRules)
7797	populate(objectMap, "outboundRules", f.OutboundRules)
7798	populate(objectMap, "privateIPAddress", f.PrivateIPAddress)
7799	populate(objectMap, "privateIPAddressVersion", f.PrivateIPAddressVersion)
7800	populate(objectMap, "privateIPAllocationMethod", f.PrivateIPAllocationMethod)
7801	populate(objectMap, "provisioningState", f.ProvisioningState)
7802	populate(objectMap, "publicIPAddress", f.PublicIPAddress)
7803	populate(objectMap, "publicIPPrefix", f.PublicIPPrefix)
7804	populate(objectMap, "subnet", f.Subnet)
7805	return json.Marshal(objectMap)
7806}
7807
7808// GatewayLoadBalancerTunnelInterface - Gateway load balancer tunnel interface of a load balancer backend address pool.
7809type GatewayLoadBalancerTunnelInterface struct {
7810	// Identifier of gateway load balancer tunnel interface.
7811	Identifier *int32 `json:"identifier,omitempty"`
7812
7813	// Port of gateway load balancer tunnel interface.
7814	Port *int32 `json:"port,omitempty"`
7815
7816	// Protocol of gateway load balancer tunnel interface.
7817	Protocol *GatewayLoadBalancerTunnelProtocol `json:"protocol,omitempty"`
7818
7819	// Traffic type of gateway load balancer tunnel interface.
7820	Type *GatewayLoadBalancerTunnelInterfaceType `json:"type,omitempty"`
7821}
7822
7823// GatewayRoute - Gateway routing details.
7824type GatewayRoute struct {
7825	// READ-ONLY; The route's AS path sequence.
7826	AsPath *string `json:"asPath,omitempty" azure:"ro"`
7827
7828	// READ-ONLY; The gateway's local address.
7829	LocalAddress *string `json:"localAddress,omitempty" azure:"ro"`
7830
7831	// READ-ONLY; The route's network prefix.
7832	Network *string `json:"network,omitempty" azure:"ro"`
7833
7834	// READ-ONLY; The route's next hop.
7835	NextHop *string `json:"nextHop,omitempty" azure:"ro"`
7836
7837	// READ-ONLY; The source this route was learned from.
7838	Origin *string `json:"origin,omitempty" azure:"ro"`
7839
7840	// READ-ONLY; The peer this route was learned from.
7841	SourcePeer *string `json:"sourcePeer,omitempty" azure:"ro"`
7842
7843	// READ-ONLY; The route's weight.
7844	Weight *int32 `json:"weight,omitempty" azure:"ro"`
7845}
7846
7847// GatewayRouteListResult - List of virtual network gateway routes.
7848type GatewayRouteListResult struct {
7849	// List of gateway routes.
7850	Value []*GatewayRoute `json:"value,omitempty"`
7851}
7852
7853// MarshalJSON implements the json.Marshaller interface for type GatewayRouteListResult.
7854func (g GatewayRouteListResult) MarshalJSON() ([]byte, error) {
7855	objectMap := make(map[string]interface{})
7856	populate(objectMap, "value", g.Value)
7857	return json.Marshal(objectMap)
7858}
7859
7860// GenerateExpressRoutePortsLOARequest - The customer name to be printed on a letter of authorization.
7861type GenerateExpressRoutePortsLOARequest struct {
7862	// REQUIRED; The customer name.
7863	CustomerName *string `json:"customerName,omitempty"`
7864}
7865
7866// GenerateExpressRoutePortsLOAResult - Response for GenerateExpressRoutePortsLOA API service call.
7867type GenerateExpressRoutePortsLOAResult struct {
7868	// The content as a base64 encoded string.
7869	EncodedContent *string `json:"encodedContent,omitempty"`
7870}
7871
7872// GetVPNSitesConfigurationRequest - List of Vpn-Sites.
7873type GetVPNSitesConfigurationRequest struct {
7874	// REQUIRED; The sas-url to download the configurations for vpn-sites.
7875	OutputBlobSasURL *string `json:"outputBlobSasUrl,omitempty"`
7876
7877	// List of resource-ids of the vpn-sites for which config is to be downloaded.
7878	VPNSites []*string `json:"vpnSites,omitempty"`
7879}
7880
7881// MarshalJSON implements the json.Marshaller interface for type GetVPNSitesConfigurationRequest.
7882func (g GetVPNSitesConfigurationRequest) MarshalJSON() ([]byte, error) {
7883	objectMap := make(map[string]interface{})
7884	populate(objectMap, "outputBlobSasUrl", g.OutputBlobSasURL)
7885	populate(objectMap, "vpnSites", g.VPNSites)
7886	return json.Marshal(objectMap)
7887}
7888
7889// HTTPConfiguration - HTTP configuration of the connectivity check.
7890type HTTPConfiguration struct {
7891	// List of HTTP headers.
7892	Headers []*HTTPHeader `json:"headers,omitempty"`
7893
7894	// HTTP method.
7895	Method *HTTPMethod `json:"method,omitempty"`
7896
7897	// Valid status codes.
7898	ValidStatusCodes []*int32 `json:"validStatusCodes,omitempty"`
7899}
7900
7901// MarshalJSON implements the json.Marshaller interface for type HTTPConfiguration.
7902func (h HTTPConfiguration) MarshalJSON() ([]byte, error) {
7903	objectMap := make(map[string]interface{})
7904	populate(objectMap, "headers", h.Headers)
7905	populate(objectMap, "method", h.Method)
7906	populate(objectMap, "validStatusCodes", h.ValidStatusCodes)
7907	return json.Marshal(objectMap)
7908}
7909
7910// HTTPHeader - The HTTP header.
7911type HTTPHeader struct {
7912	// The name in HTTP header.
7913	Name *string `json:"name,omitempty"`
7914
7915	// The value in HTTP header.
7916	Value *string `json:"value,omitempty"`
7917}
7918
7919// HopLink - Hop link.
7920type HopLink struct {
7921	// Hop link properties.
7922	Properties *HopLinkProperties `json:"properties,omitempty"`
7923
7924	// READ-ONLY; Provides additional context on links.
7925	Context map[string]*string `json:"context,omitempty" azure:"ro"`
7926
7927	// READ-ONLY; List of issues.
7928	Issues []*ConnectivityIssue `json:"issues,omitempty" azure:"ro"`
7929
7930	// READ-ONLY; Link type.
7931	LinkType *string `json:"linkType,omitempty" azure:"ro"`
7932
7933	// READ-ONLY; The ID of the next hop.
7934	NextHopID *string `json:"nextHopId,omitempty" azure:"ro"`
7935
7936	// READ-ONLY; Resource ID.
7937	ResourceID *string `json:"resourceId,omitempty" azure:"ro"`
7938}
7939
7940// MarshalJSON implements the json.Marshaller interface for type HopLink.
7941func (h HopLink) MarshalJSON() ([]byte, error) {
7942	objectMap := make(map[string]interface{})
7943	populate(objectMap, "context", h.Context)
7944	populate(objectMap, "issues", h.Issues)
7945	populate(objectMap, "linkType", h.LinkType)
7946	populate(objectMap, "nextHopId", h.NextHopID)
7947	populate(objectMap, "properties", h.Properties)
7948	populate(objectMap, "resourceId", h.ResourceID)
7949	return json.Marshal(objectMap)
7950}
7951
7952// HopLinkProperties - Hop link properties.
7953type HopLinkProperties struct {
7954	// READ-ONLY; Average roundtrip time in milliseconds.
7955	RoundTripTimeAvg *int64 `json:"roundTripTimeAvg,omitempty" azure:"ro"`
7956
7957	// READ-ONLY; Maximum roundtrip time in milliseconds.
7958	RoundTripTimeMax *int64 `json:"roundTripTimeMax,omitempty" azure:"ro"`
7959
7960	// READ-ONLY; Minimum roundtrip time in milliseconds.
7961	RoundTripTimeMin *int64 `json:"roundTripTimeMin,omitempty" azure:"ro"`
7962}
7963
7964// HubIPAddresses - IP addresses associated with azure firewall.
7965type HubIPAddresses struct {
7966	// Private IP Address associated with azure firewall.
7967	PrivateIPAddress *string `json:"privateIPAddress,omitempty"`
7968
7969	// Public IP addresses associated with azure firewall.
7970	PublicIPs *HubPublicIPAddresses `json:"publicIPs,omitempty"`
7971}
7972
7973// HubIPConfiguration - IpConfigurations.
7974type HubIPConfiguration struct {
7975	SubResource
7976	// Name of the Ip Configuration.
7977	Name *string `json:"name,omitempty"`
7978
7979	// The properties of the Virtual Hub IPConfigurations.
7980	Properties *HubIPConfigurationPropertiesFormat `json:"properties,omitempty"`
7981
7982	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
7983	Etag *string `json:"etag,omitempty" azure:"ro"`
7984
7985	// READ-ONLY; Ipconfiguration type.
7986	Type *string `json:"type,omitempty" azure:"ro"`
7987}
7988
7989// MarshalJSON implements the json.Marshaller interface for type HubIPConfiguration.
7990func (h HubIPConfiguration) MarshalJSON() ([]byte, error) {
7991	objectMap := h.SubResource.marshalInternal()
7992	populate(objectMap, "etag", h.Etag)
7993	populate(objectMap, "name", h.Name)
7994	populate(objectMap, "properties", h.Properties)
7995	populate(objectMap, "type", h.Type)
7996	return json.Marshal(objectMap)
7997}
7998
7999// HubIPConfigurationPropertiesFormat - Properties of IP configuration.
8000type HubIPConfigurationPropertiesFormat struct {
8001	// The private IP address of the IP configuration.
8002	PrivateIPAddress *string `json:"privateIPAddress,omitempty"`
8003
8004	// The private IP address allocation method.
8005	PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"`
8006
8007	// The reference to the public IP resource.
8008	PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"`
8009
8010	// The reference to the subnet resource.
8011	Subnet *Subnet `json:"subnet,omitempty"`
8012
8013	// READ-ONLY; The provisioning state of the IP configuration resource.
8014	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
8015}
8016
8017// HubPublicIPAddresses - Public IP addresses associated with azure firewall.
8018type HubPublicIPAddresses struct {
8019	// The list of Public IP addresses associated with azure firewall or IP addresses to be retained.
8020	Addresses []*AzureFirewallPublicIPAddress `json:"addresses,omitempty"`
8021
8022	// The number of Public IP addresses associated with azure firewall.
8023	Count *int32 `json:"count,omitempty"`
8024}
8025
8026// MarshalJSON implements the json.Marshaller interface for type HubPublicIPAddresses.
8027func (h HubPublicIPAddresses) MarshalJSON() ([]byte, error) {
8028	objectMap := make(map[string]interface{})
8029	populate(objectMap, "addresses", h.Addresses)
8030	populate(objectMap, "count", h.Count)
8031	return json.Marshal(objectMap)
8032}
8033
8034// HubRoute - RouteTable route.
8035type HubRoute struct {
8036	// REQUIRED; The type of destinations (eg: CIDR, ResourceId, Service).
8037	DestinationType *string `json:"destinationType,omitempty"`
8038
8039	// REQUIRED; List of all destinations.
8040	Destinations []*string `json:"destinations,omitempty"`
8041
8042	// REQUIRED; The name of the Route that is unique within a RouteTable. This name can be used to access this route.
8043	Name *string `json:"name,omitempty"`
8044
8045	// REQUIRED; NextHop resource ID.
8046	NextHop *string `json:"nextHop,omitempty"`
8047
8048	// REQUIRED; The type of next hop (eg: ResourceId).
8049	NextHopType *string `json:"nextHopType,omitempty"`
8050}
8051
8052// MarshalJSON implements the json.Marshaller interface for type HubRoute.
8053func (h HubRoute) MarshalJSON() ([]byte, error) {
8054	objectMap := make(map[string]interface{})
8055	populate(objectMap, "destinationType", h.DestinationType)
8056	populate(objectMap, "destinations", h.Destinations)
8057	populate(objectMap, "name", h.Name)
8058	populate(objectMap, "nextHop", h.NextHop)
8059	populate(objectMap, "nextHopType", h.NextHopType)
8060	return json.Marshal(objectMap)
8061}
8062
8063// HubRouteTable - RouteTable resource in a virtual hub.
8064type HubRouteTable struct {
8065	SubResource
8066	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
8067	Name *string `json:"name,omitempty"`
8068
8069	// Properties of the RouteTable resource.
8070	Properties *HubRouteTableProperties `json:"properties,omitempty"`
8071
8072	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
8073	Etag *string `json:"etag,omitempty" azure:"ro"`
8074
8075	// READ-ONLY; Resource type.
8076	Type *string `json:"type,omitempty" azure:"ro"`
8077}
8078
8079// MarshalJSON implements the json.Marshaller interface for type HubRouteTable.
8080func (h HubRouteTable) MarshalJSON() ([]byte, error) {
8081	objectMap := h.SubResource.marshalInternal()
8082	populate(objectMap, "etag", h.Etag)
8083	populate(objectMap, "name", h.Name)
8084	populate(objectMap, "properties", h.Properties)
8085	populate(objectMap, "type", h.Type)
8086	return json.Marshal(objectMap)
8087}
8088
8089// HubRouteTableProperties - Parameters for RouteTable.
8090type HubRouteTableProperties struct {
8091	// List of labels associated with this route table.
8092	Labels []*string `json:"labels,omitempty"`
8093
8094	// List of all routes.
8095	Routes []*HubRoute `json:"routes,omitempty"`
8096
8097	// READ-ONLY; List of all connections associated with this route table.
8098	AssociatedConnections []*string `json:"associatedConnections,omitempty" azure:"ro"`
8099
8100	// READ-ONLY; List of all connections that advertise to this route table.
8101	PropagatingConnections []*string `json:"propagatingConnections,omitempty" azure:"ro"`
8102
8103	// READ-ONLY; The provisioning state of the RouteTable resource.
8104	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
8105}
8106
8107// MarshalJSON implements the json.Marshaller interface for type HubRouteTableProperties.
8108func (h HubRouteTableProperties) MarshalJSON() ([]byte, error) {
8109	objectMap := make(map[string]interface{})
8110	populate(objectMap, "associatedConnections", h.AssociatedConnections)
8111	populate(objectMap, "labels", h.Labels)
8112	populate(objectMap, "propagatingConnections", h.PropagatingConnections)
8113	populate(objectMap, "provisioningState", h.ProvisioningState)
8114	populate(objectMap, "routes", h.Routes)
8115	return json.Marshal(objectMap)
8116}
8117
8118// HubRouteTablesBeginCreateOrUpdateOptions contains the optional parameters for the HubRouteTables.BeginCreateOrUpdate method.
8119type HubRouteTablesBeginCreateOrUpdateOptions struct {
8120	// placeholder for future optional parameters
8121}
8122
8123// HubRouteTablesBeginDeleteOptions contains the optional parameters for the HubRouteTables.BeginDelete method.
8124type HubRouteTablesBeginDeleteOptions struct {
8125	// placeholder for future optional parameters
8126}
8127
8128// HubRouteTablesGetOptions contains the optional parameters for the HubRouteTables.Get method.
8129type HubRouteTablesGetOptions struct {
8130	// placeholder for future optional parameters
8131}
8132
8133// HubRouteTablesListOptions contains the optional parameters for the HubRouteTables.List method.
8134type HubRouteTablesListOptions struct {
8135	// placeholder for future optional parameters
8136}
8137
8138// HubVirtualNetworkConnection Resource.
8139type HubVirtualNetworkConnection struct {
8140	SubResource
8141	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
8142	Name *string `json:"name,omitempty"`
8143
8144	// Properties of the hub virtual network connection.
8145	Properties *HubVirtualNetworkConnectionProperties `json:"properties,omitempty"`
8146
8147	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
8148	Etag *string `json:"etag,omitempty" azure:"ro"`
8149}
8150
8151// MarshalJSON implements the json.Marshaller interface for type HubVirtualNetworkConnection.
8152func (h HubVirtualNetworkConnection) MarshalJSON() ([]byte, error) {
8153	objectMap := h.SubResource.marshalInternal()
8154	populate(objectMap, "etag", h.Etag)
8155	populate(objectMap, "name", h.Name)
8156	populate(objectMap, "properties", h.Properties)
8157	return json.Marshal(objectMap)
8158}
8159
8160// HubVirtualNetworkConnectionProperties - Parameters for HubVirtualNetworkConnection.
8161type HubVirtualNetworkConnectionProperties struct {
8162	// Deprecated: VirtualHub to RemoteVnet transit to enabled or not.
8163	AllowHubToRemoteVnetTransit *bool `json:"allowHubToRemoteVnetTransit,omitempty"`
8164
8165	// Deprecated: Allow RemoteVnet to use Virtual Hub's gateways.
8166	AllowRemoteVnetToUseHubVnetGateways *bool `json:"allowRemoteVnetToUseHubVnetGateways,omitempty"`
8167
8168	// Enable internet security.
8169	EnableInternetSecurity *bool `json:"enableInternetSecurity,omitempty"`
8170
8171	// Reference to the remote virtual network.
8172	RemoteVirtualNetwork *SubResource `json:"remoteVirtualNetwork,omitempty"`
8173
8174	// The Routing Configuration indicating the associated and propagated route tables on this connection.
8175	RoutingConfiguration *RoutingConfiguration `json:"routingConfiguration,omitempty"`
8176
8177	// READ-ONLY; The provisioning state of the hub virtual network connection resource.
8178	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
8179}
8180
8181// HubVirtualNetworkConnectionsBeginCreateOrUpdateOptions contains the optional parameters for the HubVirtualNetworkConnections.BeginCreateOrUpdate method.
8182type HubVirtualNetworkConnectionsBeginCreateOrUpdateOptions struct {
8183	// placeholder for future optional parameters
8184}
8185
8186// HubVirtualNetworkConnectionsBeginDeleteOptions contains the optional parameters for the HubVirtualNetworkConnections.BeginDelete method.
8187type HubVirtualNetworkConnectionsBeginDeleteOptions struct {
8188	// placeholder for future optional parameters
8189}
8190
8191// HubVirtualNetworkConnectionsGetOptions contains the optional parameters for the HubVirtualNetworkConnections.Get method.
8192type HubVirtualNetworkConnectionsGetOptions struct {
8193	// placeholder for future optional parameters
8194}
8195
8196// HubVirtualNetworkConnectionsListOptions contains the optional parameters for the HubVirtualNetworkConnections.List method.
8197type HubVirtualNetworkConnectionsListOptions struct {
8198	// placeholder for future optional parameters
8199}
8200
8201// IPAddressAvailabilityResult - Response for CheckIPAddressAvailability API service call.
8202type IPAddressAvailabilityResult struct {
8203	// Private IP address availability.
8204	Available *bool `json:"available,omitempty"`
8205
8206	// Contains other available private IP addresses if the asked for address is taken.
8207	AvailableIPAddresses []*string `json:"availableIPAddresses,omitempty"`
8208
8209	// Private IP address platform reserved.
8210	IsPlatformReserved *bool `json:"isPlatformReserved,omitempty"`
8211}
8212
8213// MarshalJSON implements the json.Marshaller interface for type IPAddressAvailabilityResult.
8214func (i IPAddressAvailabilityResult) MarshalJSON() ([]byte, error) {
8215	objectMap := make(map[string]interface{})
8216	populate(objectMap, "available", i.Available)
8217	populate(objectMap, "availableIPAddresses", i.AvailableIPAddresses)
8218	populate(objectMap, "isPlatformReserved", i.IsPlatformReserved)
8219	return json.Marshal(objectMap)
8220}
8221
8222// IPAllocation - IpAllocation resource.
8223type IPAllocation struct {
8224	Resource
8225	// Properties of the IpAllocation.
8226	Properties *IPAllocationPropertiesFormat `json:"properties,omitempty"`
8227
8228	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
8229	Etag *string `json:"etag,omitempty" azure:"ro"`
8230}
8231
8232// MarshalJSON implements the json.Marshaller interface for type IPAllocation.
8233func (i IPAllocation) MarshalJSON() ([]byte, error) {
8234	objectMap := i.Resource.marshalInternal()
8235	populate(objectMap, "etag", i.Etag)
8236	populate(objectMap, "properties", i.Properties)
8237	return json.Marshal(objectMap)
8238}
8239
8240// IPAllocationListResult - Response for the ListIpAllocations API service call.
8241type IPAllocationListResult struct {
8242	// The URL to get the next set of results.
8243	NextLink *string `json:"nextLink,omitempty"`
8244
8245	// A list of IpAllocation resources.
8246	Value []*IPAllocation `json:"value,omitempty"`
8247}
8248
8249// MarshalJSON implements the json.Marshaller interface for type IPAllocationListResult.
8250func (i IPAllocationListResult) MarshalJSON() ([]byte, error) {
8251	objectMap := make(map[string]interface{})
8252	populate(objectMap, "nextLink", i.NextLink)
8253	populate(objectMap, "value", i.Value)
8254	return json.Marshal(objectMap)
8255}
8256
8257// IPAllocationPropertiesFormat - Properties of the IpAllocation.
8258type IPAllocationPropertiesFormat struct {
8259	// IpAllocation tags.
8260	AllocationTags map[string]*string `json:"allocationTags,omitempty"`
8261
8262	// The IPAM allocation ID.
8263	IpamAllocationID *string `json:"ipamAllocationId,omitempty"`
8264
8265	// The address prefix for the IpAllocation.
8266	Prefix *string `json:"prefix,omitempty"`
8267
8268	// The address prefix length for the IpAllocation.
8269	PrefixLength *int32 `json:"prefixLength,omitempty"`
8270
8271	// The address prefix Type for the IpAllocation.
8272	PrefixType *IPVersion `json:"prefixType,omitempty"`
8273
8274	// The type for the IpAllocation.
8275	Type *IPAllocationType `json:"type,omitempty"`
8276
8277	// READ-ONLY; The Subnet that using the prefix of this IpAllocation resource.
8278	Subnet *SubResource `json:"subnet,omitempty" azure:"ro"`
8279
8280	// READ-ONLY; The VirtualNetwork that using the prefix of this IpAllocation resource.
8281	VirtualNetwork *SubResource `json:"virtualNetwork,omitempty" azure:"ro"`
8282}
8283
8284// MarshalJSON implements the json.Marshaller interface for type IPAllocationPropertiesFormat.
8285func (i IPAllocationPropertiesFormat) MarshalJSON() ([]byte, error) {
8286	objectMap := make(map[string]interface{})
8287	populate(objectMap, "allocationTags", i.AllocationTags)
8288	populate(objectMap, "ipamAllocationId", i.IpamAllocationID)
8289	populate(objectMap, "prefix", i.Prefix)
8290	populate(objectMap, "prefixLength", i.PrefixLength)
8291	populate(objectMap, "prefixType", i.PrefixType)
8292	populate(objectMap, "subnet", i.Subnet)
8293	populate(objectMap, "type", i.Type)
8294	populate(objectMap, "virtualNetwork", i.VirtualNetwork)
8295	return json.Marshal(objectMap)
8296}
8297
8298// IPAllocationsBeginCreateOrUpdateOptions contains the optional parameters for the IPAllocations.BeginCreateOrUpdate method.
8299type IPAllocationsBeginCreateOrUpdateOptions struct {
8300	// placeholder for future optional parameters
8301}
8302
8303// IPAllocationsBeginDeleteOptions contains the optional parameters for the IPAllocations.BeginDelete method.
8304type IPAllocationsBeginDeleteOptions struct {
8305	// placeholder for future optional parameters
8306}
8307
8308// IPAllocationsGetOptions contains the optional parameters for the IPAllocations.Get method.
8309type IPAllocationsGetOptions struct {
8310	// Expands referenced resources.
8311	Expand *string
8312}
8313
8314// IPAllocationsListByResourceGroupOptions contains the optional parameters for the IPAllocations.ListByResourceGroup method.
8315type IPAllocationsListByResourceGroupOptions struct {
8316	// placeholder for future optional parameters
8317}
8318
8319// IPAllocationsListOptions contains the optional parameters for the IPAllocations.List method.
8320type IPAllocationsListOptions struct {
8321	// placeholder for future optional parameters
8322}
8323
8324// IPAllocationsUpdateTagsOptions contains the optional parameters for the IPAllocations.UpdateTags method.
8325type IPAllocationsUpdateTagsOptions struct {
8326	// placeholder for future optional parameters
8327}
8328
8329// IPConfiguration - IP configuration.
8330type IPConfiguration struct {
8331	SubResource
8332	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
8333	Name *string `json:"name,omitempty"`
8334
8335	// Properties of the IP configuration.
8336	Properties *IPConfigurationPropertiesFormat `json:"properties,omitempty"`
8337
8338	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
8339	Etag *string `json:"etag,omitempty" azure:"ro"`
8340}
8341
8342// MarshalJSON implements the json.Marshaller interface for type IPConfiguration.
8343func (i IPConfiguration) MarshalJSON() ([]byte, error) {
8344	objectMap := i.SubResource.marshalInternal()
8345	populate(objectMap, "etag", i.Etag)
8346	populate(objectMap, "name", i.Name)
8347	populate(objectMap, "properties", i.Properties)
8348	return json.Marshal(objectMap)
8349}
8350
8351// IPConfigurationBgpPeeringAddress - Properties of IPConfigurationBgpPeeringAddress.
8352type IPConfigurationBgpPeeringAddress struct {
8353	// The list of custom BGP peering addresses which belong to IP configuration.
8354	CustomBgpIPAddresses []*string `json:"customBgpIpAddresses,omitempty"`
8355
8356	// The ID of IP configuration which belongs to gateway.
8357	IPConfigurationID *string `json:"ipconfigurationId,omitempty"`
8358
8359	// READ-ONLY; The list of default BGP peering addresses which belong to IP configuration.
8360	DefaultBgpIPAddresses []*string `json:"defaultBgpIpAddresses,omitempty" azure:"ro"`
8361
8362	// READ-ONLY; The list of tunnel public IP addresses which belong to IP configuration.
8363	TunnelIPAddresses []*string `json:"tunnelIpAddresses,omitempty" azure:"ro"`
8364}
8365
8366// MarshalJSON implements the json.Marshaller interface for type IPConfigurationBgpPeeringAddress.
8367func (i IPConfigurationBgpPeeringAddress) MarshalJSON() ([]byte, error) {
8368	objectMap := make(map[string]interface{})
8369	populate(objectMap, "customBgpIpAddresses", i.CustomBgpIPAddresses)
8370	populate(objectMap, "defaultBgpIpAddresses", i.DefaultBgpIPAddresses)
8371	populate(objectMap, "ipconfigurationId", i.IPConfigurationID)
8372	populate(objectMap, "tunnelIpAddresses", i.TunnelIPAddresses)
8373	return json.Marshal(objectMap)
8374}
8375
8376// IPConfigurationProfile - IP configuration profile child resource.
8377type IPConfigurationProfile struct {
8378	SubResource
8379	// The name of the resource. This name can be used to access the resource.
8380	Name *string `json:"name,omitempty"`
8381
8382	// Properties of the IP configuration profile.
8383	Properties *IPConfigurationProfilePropertiesFormat `json:"properties,omitempty"`
8384
8385	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
8386	Etag *string `json:"etag,omitempty" azure:"ro"`
8387
8388	// READ-ONLY; Sub Resource type.
8389	Type *string `json:"type,omitempty" azure:"ro"`
8390}
8391
8392// MarshalJSON implements the json.Marshaller interface for type IPConfigurationProfile.
8393func (i IPConfigurationProfile) MarshalJSON() ([]byte, error) {
8394	objectMap := i.SubResource.marshalInternal()
8395	populate(objectMap, "etag", i.Etag)
8396	populate(objectMap, "name", i.Name)
8397	populate(objectMap, "properties", i.Properties)
8398	populate(objectMap, "type", i.Type)
8399	return json.Marshal(objectMap)
8400}
8401
8402// IPConfigurationProfilePropertiesFormat - IP configuration profile properties.
8403type IPConfigurationProfilePropertiesFormat struct {
8404	// The reference to the subnet resource to create a container network interface ip configuration.
8405	Subnet *Subnet `json:"subnet,omitempty"`
8406
8407	// READ-ONLY; The provisioning state of the IP configuration profile resource.
8408	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
8409}
8410
8411// IPConfigurationPropertiesFormat - Properties of IP configuration.
8412type IPConfigurationPropertiesFormat struct {
8413	// The private IP address of the IP configuration.
8414	PrivateIPAddress *string `json:"privateIPAddress,omitempty"`
8415
8416	// The private IP address allocation method.
8417	PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"`
8418
8419	// The reference to the public IP resource.
8420	PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"`
8421
8422	// The reference to the subnet resource.
8423	Subnet *Subnet `json:"subnet,omitempty"`
8424
8425	// READ-ONLY; The provisioning state of the IP configuration resource.
8426	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
8427}
8428
8429// IPGroup - The IpGroups resource information.
8430type IPGroup struct {
8431	Resource
8432	// Properties of the IpGroups.
8433	Properties *IPGroupPropertiesFormat `json:"properties,omitempty"`
8434
8435	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
8436	Etag *string `json:"etag,omitempty" azure:"ro"`
8437}
8438
8439// MarshalJSON implements the json.Marshaller interface for type IPGroup.
8440func (i IPGroup) MarshalJSON() ([]byte, error) {
8441	objectMap := i.Resource.marshalInternal()
8442	populate(objectMap, "etag", i.Etag)
8443	populate(objectMap, "properties", i.Properties)
8444	return json.Marshal(objectMap)
8445}
8446
8447// IPGroupListResult - Response for the ListIpGroups API service call.
8448type IPGroupListResult struct {
8449	// URL to get the next set of results.
8450	NextLink *string `json:"nextLink,omitempty"`
8451
8452	// The list of IpGroups information resources.
8453	Value []*IPGroup `json:"value,omitempty"`
8454}
8455
8456// MarshalJSON implements the json.Marshaller interface for type IPGroupListResult.
8457func (i IPGroupListResult) MarshalJSON() ([]byte, error) {
8458	objectMap := make(map[string]interface{})
8459	populate(objectMap, "nextLink", i.NextLink)
8460	populate(objectMap, "value", i.Value)
8461	return json.Marshal(objectMap)
8462}
8463
8464// IPGroupPropertiesFormat - The IpGroups property information.
8465type IPGroupPropertiesFormat struct {
8466	// IpAddresses/IpAddressPrefixes in the IpGroups resource.
8467	IPAddresses []*string `json:"ipAddresses,omitempty"`
8468
8469	// READ-ONLY; List of references to Firewall Policies resources that this IpGroups is associated with.
8470	FirewallPolicies []*SubResource `json:"firewallPolicies,omitempty" azure:"ro"`
8471
8472	// READ-ONLY; List of references to Firewall resources that this IpGroups is associated with.
8473	Firewalls []*SubResource `json:"firewalls,omitempty" azure:"ro"`
8474
8475	// READ-ONLY; The provisioning state of the IpGroups resource.
8476	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
8477}
8478
8479// MarshalJSON implements the json.Marshaller interface for type IPGroupPropertiesFormat.
8480func (i IPGroupPropertiesFormat) MarshalJSON() ([]byte, error) {
8481	objectMap := make(map[string]interface{})
8482	populate(objectMap, "firewallPolicies", i.FirewallPolicies)
8483	populate(objectMap, "firewalls", i.Firewalls)
8484	populate(objectMap, "ipAddresses", i.IPAddresses)
8485	populate(objectMap, "provisioningState", i.ProvisioningState)
8486	return json.Marshal(objectMap)
8487}
8488
8489// IPGroupsBeginCreateOrUpdateOptions contains the optional parameters for the IPGroups.BeginCreateOrUpdate method.
8490type IPGroupsBeginCreateOrUpdateOptions struct {
8491	// placeholder for future optional parameters
8492}
8493
8494// IPGroupsBeginDeleteOptions contains the optional parameters for the IPGroups.BeginDelete method.
8495type IPGroupsBeginDeleteOptions struct {
8496	// placeholder for future optional parameters
8497}
8498
8499// IPGroupsGetOptions contains the optional parameters for the IPGroups.Get method.
8500type IPGroupsGetOptions struct {
8501	// Expands resourceIds (of Firewalls/Network Security Groups etc.) back referenced by the IpGroups resource.
8502	Expand *string
8503}
8504
8505// IPGroupsListByResourceGroupOptions contains the optional parameters for the IPGroups.ListByResourceGroup method.
8506type IPGroupsListByResourceGroupOptions struct {
8507	// placeholder for future optional parameters
8508}
8509
8510// IPGroupsListOptions contains the optional parameters for the IPGroups.List method.
8511type IPGroupsListOptions struct {
8512	// placeholder for future optional parameters
8513}
8514
8515// IPGroupsUpdateGroupsOptions contains the optional parameters for the IPGroups.UpdateGroups method.
8516type IPGroupsUpdateGroupsOptions struct {
8517	// placeholder for future optional parameters
8518}
8519
8520// IPSecPolicy - An IPSec Policy configuration for a virtual network gateway connection.
8521type IPSecPolicy struct {
8522	// REQUIRED; The DH Group used in IKE Phase 1 for initial SA.
8523	DhGroup *DhGroup `json:"dhGroup,omitempty"`
8524
8525	// REQUIRED; The IPSec encryption algorithm (IKE phase 1).
8526	IPSecEncryption *IPSecEncryption `json:"ipsecEncryption,omitempty"`
8527
8528	// REQUIRED; The IPSec integrity algorithm (IKE phase 1).
8529	IPSecIntegrity *IPSecIntegrity `json:"ipsecIntegrity,omitempty"`
8530
8531	// REQUIRED; The IKE encryption algorithm (IKE phase 2).
8532	IkeEncryption *IkeEncryption `json:"ikeEncryption,omitempty"`
8533
8534	// REQUIRED; The IKE integrity algorithm (IKE phase 2).
8535	IkeIntegrity *IkeIntegrity `json:"ikeIntegrity,omitempty"`
8536
8537	// REQUIRED; The Pfs Group used in IKE Phase 2 for new child SA.
8538	PfsGroup *PfsGroup `json:"pfsGroup,omitempty"`
8539
8540	// REQUIRED; The IPSec Security Association (also called Quick Mode or Phase 2 SA) payload size in KB for a site to site VPN tunnel.
8541	SaDataSizeKilobytes *int32 `json:"saDataSizeKilobytes,omitempty"`
8542
8543	// REQUIRED; The IPSec Security Association (also called Quick Mode or Phase 2 SA) lifetime in seconds for a site to site VPN tunnel.
8544	SaLifeTimeSeconds *int32 `json:"saLifeTimeSeconds,omitempty"`
8545}
8546
8547// IPTag - Contains the IpTag associated with the object.
8548type IPTag struct {
8549	// The IP tag type. Example: FirstPartyUsage.
8550	IPTagType *string `json:"ipTagType,omitempty"`
8551
8552	// The value of the IP tag associated with the public IP. Example: SQL.
8553	Tag *string `json:"tag,omitempty"`
8554}
8555
8556// IPv6CircuitConnectionConfig - IPv6 Circuit Connection properties for global reach.
8557type IPv6CircuitConnectionConfig struct {
8558	// /125 IP address space to carve out customer addresses for global reach.
8559	AddressPrefix *string `json:"addressPrefix,omitempty"`
8560
8561	// READ-ONLY; Express Route Circuit connection state.
8562	CircuitConnectionStatus *CircuitConnectionStatus `json:"circuitConnectionStatus,omitempty" azure:"ro"`
8563}
8564
8565// IPv6ExpressRouteCircuitPeeringConfig - Contains IPv6 peering config.
8566type IPv6ExpressRouteCircuitPeeringConfig struct {
8567	// The Microsoft peering configuration.
8568	MicrosoftPeeringConfig *ExpressRouteCircuitPeeringConfig `json:"microsoftPeeringConfig,omitempty"`
8569
8570	// The primary address prefix.
8571	PrimaryPeerAddressPrefix *string `json:"primaryPeerAddressPrefix,omitempty"`
8572
8573	// The reference to the RouteFilter resource.
8574	RouteFilter *SubResource `json:"routeFilter,omitempty"`
8575
8576	// The secondary address prefix.
8577	SecondaryPeerAddressPrefix *string `json:"secondaryPeerAddressPrefix,omitempty"`
8578
8579	// The state of peering.
8580	State *ExpressRouteCircuitPeeringState `json:"state,omitempty"`
8581}
8582
8583// InboundNatPool - Inbound NAT pool of the load balancer.
8584type InboundNatPool struct {
8585	SubResource
8586	// The name of the resource that is unique within the set of inbound NAT pools used by the load balancer. This name can be used to access the resource.
8587	Name *string `json:"name,omitempty"`
8588
8589	// Properties of load balancer inbound nat pool.
8590	Properties *InboundNatPoolPropertiesFormat `json:"properties,omitempty"`
8591
8592	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
8593	Etag *string `json:"etag,omitempty" azure:"ro"`
8594
8595	// READ-ONLY; Type of the resource.
8596	Type *string `json:"type,omitempty" azure:"ro"`
8597}
8598
8599// MarshalJSON implements the json.Marshaller interface for type InboundNatPool.
8600func (i InboundNatPool) MarshalJSON() ([]byte, error) {
8601	objectMap := i.SubResource.marshalInternal()
8602	populate(objectMap, "etag", i.Etag)
8603	populate(objectMap, "name", i.Name)
8604	populate(objectMap, "properties", i.Properties)
8605	populate(objectMap, "type", i.Type)
8606	return json.Marshal(objectMap)
8607}
8608
8609// InboundNatPoolPropertiesFormat - Properties of Inbound NAT pool.
8610type InboundNatPoolPropertiesFormat struct {
8611	// REQUIRED; The port used for internal connections on the endpoint. Acceptable values are between 1 and 65535.
8612	BackendPort *int32 `json:"backendPort,omitempty"`
8613
8614	// REQUIRED; The last port number in the range of external ports that will be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable
8615	// values range between 1 and 65535.
8616	FrontendPortRangeEnd *int32 `json:"frontendPortRangeEnd,omitempty"`
8617
8618	// REQUIRED; The first port number in the range of external ports that will be used to provide Inbound Nat to NICs associated with a load balancer. Acceptable
8619	// values range between 1 and 65534.
8620	FrontendPortRangeStart *int32 `json:"frontendPortRangeStart,omitempty"`
8621
8622	// REQUIRED; The reference to the transport protocol used by the inbound NAT pool.
8623	Protocol *TransportProtocol `json:"protocol,omitempty"`
8624
8625	// Configures a virtual machine's endpoint for the floating IP capability required to configure a SQL AlwaysOn Availability Group. This setting is required
8626	// when using the SQL AlwaysOn Availability Groups
8627	// in SQL server. This setting can't be changed after you create the endpoint.
8628	EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"`
8629
8630	// Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected connection termination. This element is only used when the protocol is set to
8631	// TCP.
8632	EnableTCPReset *bool `json:"enableTcpReset,omitempty"`
8633
8634	// A reference to frontend IP addresses.
8635	FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"`
8636
8637	// The timeout for the TCP idle connection. The value can be set between 4 and 30 minutes. The default value is 4 minutes. This element is only used when
8638	// the protocol is set to TCP.
8639	IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"`
8640
8641	// READ-ONLY; The provisioning state of the inbound NAT pool resource.
8642	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
8643}
8644
8645// InboundNatRule - Inbound NAT rule of the load balancer.
8646type InboundNatRule struct {
8647	SubResource
8648	// The name of the resource that is unique within the set of inbound NAT rules used by the load balancer. This name can be used to access the resource.
8649	Name *string `json:"name,omitempty"`
8650
8651	// Properties of load balancer inbound nat rule.
8652	Properties *InboundNatRulePropertiesFormat `json:"properties,omitempty"`
8653
8654	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
8655	Etag *string `json:"etag,omitempty" azure:"ro"`
8656
8657	// READ-ONLY; Type of the resource.
8658	Type *string `json:"type,omitempty" azure:"ro"`
8659}
8660
8661// MarshalJSON implements the json.Marshaller interface for type InboundNatRule.
8662func (i InboundNatRule) MarshalJSON() ([]byte, error) {
8663	objectMap := i.SubResource.marshalInternal()
8664	populate(objectMap, "etag", i.Etag)
8665	populate(objectMap, "name", i.Name)
8666	populate(objectMap, "properties", i.Properties)
8667	populate(objectMap, "type", i.Type)
8668	return json.Marshal(objectMap)
8669}
8670
8671// InboundNatRuleListResult - Response for ListInboundNatRule API service call.
8672type InboundNatRuleListResult struct {
8673	// A list of inbound nat rules in a load balancer.
8674	Value []*InboundNatRule `json:"value,omitempty"`
8675
8676	// READ-ONLY; The URL to get the next set of results.
8677	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
8678}
8679
8680// MarshalJSON implements the json.Marshaller interface for type InboundNatRuleListResult.
8681func (i InboundNatRuleListResult) MarshalJSON() ([]byte, error) {
8682	objectMap := make(map[string]interface{})
8683	populate(objectMap, "nextLink", i.NextLink)
8684	populate(objectMap, "value", i.Value)
8685	return json.Marshal(objectMap)
8686}
8687
8688// InboundNatRulePropertiesFormat - Properties of the inbound NAT rule.
8689type InboundNatRulePropertiesFormat struct {
8690	// The port used for the internal endpoint. Acceptable values range from 1 to 65535.
8691	BackendPort *int32 `json:"backendPort,omitempty"`
8692
8693	// Configures a virtual machine's endpoint for the floating IP capability required to configure a SQL AlwaysOn Availability Group. This setting is required
8694	// when using the SQL AlwaysOn Availability Groups
8695	// in SQL server. This setting can't be changed after you create the endpoint.
8696	EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"`
8697
8698	// Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected connection termination. This element is only used when the protocol is set to
8699	// TCP.
8700	EnableTCPReset *bool `json:"enableTcpReset,omitempty"`
8701
8702	// A reference to frontend IP addresses.
8703	FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"`
8704
8705	// The port for the external endpoint. Port numbers for each rule must be unique within the Load Balancer. Acceptable values range from 1 to 65534.
8706	FrontendPort *int32 `json:"frontendPort,omitempty"`
8707
8708	// The timeout for the TCP idle connection. The value can be set between 4 and 30 minutes. The default value is 4 minutes. This element is only used when
8709	// the protocol is set to TCP.
8710	IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"`
8711
8712	// The reference to the transport protocol used by the load balancing rule.
8713	Protocol *TransportProtocol `json:"protocol,omitempty"`
8714
8715	// READ-ONLY; A reference to a private IP address defined on a network interface of a VM. Traffic sent to the frontend port of each of the frontend IP configurations
8716	// is forwarded to the backend IP.
8717	BackendIPConfiguration *NetworkInterfaceIPConfiguration `json:"backendIPConfiguration,omitempty" azure:"ro"`
8718
8719	// READ-ONLY; The provisioning state of the inbound NAT rule resource.
8720	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
8721}
8722
8723// InboundNatRulesBeginCreateOrUpdateOptions contains the optional parameters for the InboundNatRules.BeginCreateOrUpdate method.
8724type InboundNatRulesBeginCreateOrUpdateOptions struct {
8725	// placeholder for future optional parameters
8726}
8727
8728// InboundNatRulesBeginDeleteOptions contains the optional parameters for the InboundNatRules.BeginDelete method.
8729type InboundNatRulesBeginDeleteOptions struct {
8730	// placeholder for future optional parameters
8731}
8732
8733// InboundNatRulesGetOptions contains the optional parameters for the InboundNatRules.Get method.
8734type InboundNatRulesGetOptions struct {
8735	// Expands referenced resources.
8736	Expand *string
8737}
8738
8739// InboundNatRulesListOptions contains the optional parameters for the InboundNatRules.List method.
8740type InboundNatRulesListOptions struct {
8741	// placeholder for future optional parameters
8742}
8743
8744// InboundSecurityRule - NVA Inbound Security Rule resource.
8745type InboundSecurityRule struct {
8746	SubResource
8747	// Name of security rule collection.
8748	Name *string `json:"name,omitempty"`
8749
8750	// The properties of the Inbound Security Rules.
8751	Properties *InboundSecurityRuleProperties `json:"properties,omitempty"`
8752
8753	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
8754	Etag *string `json:"etag,omitempty" azure:"ro"`
8755
8756	// READ-ONLY; NVA inbound security rule type.
8757	Type *string `json:"type,omitempty" azure:"ro"`
8758}
8759
8760// MarshalJSON implements the json.Marshaller interface for type InboundSecurityRule.
8761func (i InboundSecurityRule) MarshalJSON() ([]byte, error) {
8762	objectMap := i.SubResource.marshalInternal()
8763	populate(objectMap, "etag", i.Etag)
8764	populate(objectMap, "name", i.Name)
8765	populate(objectMap, "properties", i.Properties)
8766	populate(objectMap, "type", i.Type)
8767	return json.Marshal(objectMap)
8768}
8769
8770// InboundSecurityRuleBeginCreateOrUpdateOptions contains the optional parameters for the InboundSecurityRule.BeginCreateOrUpdate method.
8771type InboundSecurityRuleBeginCreateOrUpdateOptions struct {
8772	// placeholder for future optional parameters
8773}
8774
8775// InboundSecurityRuleProperties - Properties of the Inbound Security Rules resource.
8776type InboundSecurityRuleProperties struct {
8777	// List of allowed rules.
8778	Rules []*InboundSecurityRules `json:"rules,omitempty"`
8779
8780	// READ-ONLY; The provisioning state of the resource.
8781	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
8782}
8783
8784// MarshalJSON implements the json.Marshaller interface for type InboundSecurityRuleProperties.
8785func (i InboundSecurityRuleProperties) MarshalJSON() ([]byte, error) {
8786	objectMap := make(map[string]interface{})
8787	populate(objectMap, "provisioningState", i.ProvisioningState)
8788	populate(objectMap, "rules", i.Rules)
8789	return json.Marshal(objectMap)
8790}
8791
8792// InboundSecurityRules - Properties of the Inbound Security Rules resource.
8793type InboundSecurityRules struct {
8794	// NVA port ranges to be opened up. One needs to provide specific ports.
8795	DestinationPortRange *int32 `json:"destinationPortRange,omitempty"`
8796
8797	// Protocol. This should be either TCP or UDP.
8798	Protocol *InboundSecurityRulesProtocol `json:"protocol,omitempty"`
8799
8800	// The CIDR or source IP range. Only /30, /31 and /32 Ip ranges are allowed.
8801	SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"`
8802}
8803
8804// ListHubRouteTablesResult - List of RouteTables and a URL nextLink to get the next set of results.
8805type ListHubRouteTablesResult struct {
8806	// URL to get the next set of operation list results if there are any.
8807	NextLink *string `json:"nextLink,omitempty"`
8808
8809	// List of RouteTables.
8810	Value []*HubRouteTable `json:"value,omitempty"`
8811}
8812
8813// MarshalJSON implements the json.Marshaller interface for type ListHubRouteTablesResult.
8814func (l ListHubRouteTablesResult) MarshalJSON() ([]byte, error) {
8815	objectMap := make(map[string]interface{})
8816	populate(objectMap, "nextLink", l.NextLink)
8817	populate(objectMap, "value", l.Value)
8818	return json.Marshal(objectMap)
8819}
8820
8821// ListHubVirtualNetworkConnectionsResult - List of HubVirtualNetworkConnections and a URL nextLink to get the next set of results.
8822type ListHubVirtualNetworkConnectionsResult struct {
8823	// URL to get the next set of operation list results if there are any.
8824	NextLink *string `json:"nextLink,omitempty"`
8825
8826	// List of HubVirtualNetworkConnections.
8827	Value []*HubVirtualNetworkConnection `json:"value,omitempty"`
8828}
8829
8830// MarshalJSON implements the json.Marshaller interface for type ListHubVirtualNetworkConnectionsResult.
8831func (l ListHubVirtualNetworkConnectionsResult) MarshalJSON() ([]byte, error) {
8832	objectMap := make(map[string]interface{})
8833	populate(objectMap, "nextLink", l.NextLink)
8834	populate(objectMap, "value", l.Value)
8835	return json.Marshal(objectMap)
8836}
8837
8838// ListP2SVPNGatewaysResult - Result of the request to list P2SVpnGateways. It contains a list of P2SVpnGateways and a URL nextLink to get the next set
8839// of results.
8840type ListP2SVPNGatewaysResult struct {
8841	// URL to get the next set of operation list results if there are any.
8842	NextLink *string `json:"nextLink,omitempty"`
8843
8844	// List of P2SVpnGateways.
8845	Value []*P2SVPNGateway `json:"value,omitempty"`
8846}
8847
8848// MarshalJSON implements the json.Marshaller interface for type ListP2SVPNGatewaysResult.
8849func (l ListP2SVPNGatewaysResult) MarshalJSON() ([]byte, error) {
8850	objectMap := make(map[string]interface{})
8851	populate(objectMap, "nextLink", l.NextLink)
8852	populate(objectMap, "value", l.Value)
8853	return json.Marshal(objectMap)
8854}
8855
8856// ListVPNConnectionsResult - Result of the request to list all vpn connections to a virtual wan vpn gateway. It contains a list of Vpn Connections and
8857// a URL nextLink to get the next set of results.
8858type ListVPNConnectionsResult struct {
8859	// URL to get the next set of operation list results if there are any.
8860	NextLink *string `json:"nextLink,omitempty"`
8861
8862	// List of Vpn Connections.
8863	Value []*VPNConnection `json:"value,omitempty"`
8864}
8865
8866// MarshalJSON implements the json.Marshaller interface for type ListVPNConnectionsResult.
8867func (l ListVPNConnectionsResult) MarshalJSON() ([]byte, error) {
8868	objectMap := make(map[string]interface{})
8869	populate(objectMap, "nextLink", l.NextLink)
8870	populate(objectMap, "value", l.Value)
8871	return json.Marshal(objectMap)
8872}
8873
8874// ListVPNGatewayNatRulesResult - Result of the request to list all nat rules to a virtual wan vpn gateway. It contains a list of Nat rules and a URL nextLink
8875// to get the next set of results.
8876type ListVPNGatewayNatRulesResult struct {
8877	// URL to get the next set of operation list results if there are any.
8878	NextLink *string `json:"nextLink,omitempty"`
8879
8880	// List of Nat Rules.
8881	Value []*VPNGatewayNatRule `json:"value,omitempty"`
8882}
8883
8884// MarshalJSON implements the json.Marshaller interface for type ListVPNGatewayNatRulesResult.
8885func (l ListVPNGatewayNatRulesResult) MarshalJSON() ([]byte, error) {
8886	objectMap := make(map[string]interface{})
8887	populate(objectMap, "nextLink", l.NextLink)
8888	populate(objectMap, "value", l.Value)
8889	return json.Marshal(objectMap)
8890}
8891
8892// ListVPNGatewaysResult - Result of the request to list VpnGateways. It contains a list of VpnGateways and a URL nextLink to get the next set of results.
8893type ListVPNGatewaysResult struct {
8894	// URL to get the next set of operation list results if there are any.
8895	NextLink *string `json:"nextLink,omitempty"`
8896
8897	// List of VpnGateways.
8898	Value []*VPNGateway `json:"value,omitempty"`
8899}
8900
8901// MarshalJSON implements the json.Marshaller interface for type ListVPNGatewaysResult.
8902func (l ListVPNGatewaysResult) MarshalJSON() ([]byte, error) {
8903	objectMap := make(map[string]interface{})
8904	populate(objectMap, "nextLink", l.NextLink)
8905	populate(objectMap, "value", l.Value)
8906	return json.Marshal(objectMap)
8907}
8908
8909// ListVPNServerConfigurationsResult - Result of the request to list all VpnServerConfigurations. It contains a list of VpnServerConfigurations and a URL
8910// nextLink to get the next set of results.
8911type ListVPNServerConfigurationsResult struct {
8912	// URL to get the next set of operation list results if there are any.
8913	NextLink *string `json:"nextLink,omitempty"`
8914
8915	// List of VpnServerConfigurations.
8916	Value []*VPNServerConfiguration `json:"value,omitempty"`
8917}
8918
8919// MarshalJSON implements the json.Marshaller interface for type ListVPNServerConfigurationsResult.
8920func (l ListVPNServerConfigurationsResult) MarshalJSON() ([]byte, error) {
8921	objectMap := make(map[string]interface{})
8922	populate(objectMap, "nextLink", l.NextLink)
8923	populate(objectMap, "value", l.Value)
8924	return json.Marshal(objectMap)
8925}
8926
8927// ListVPNSiteLinkConnectionsResult - Result of the request to list all vpn connections to a virtual wan vpn gateway. It contains a list of Vpn Connections
8928// and a URL nextLink to get the next set of results.
8929type ListVPNSiteLinkConnectionsResult struct {
8930	// URL to get the next set of operation list results if there are any.
8931	NextLink *string `json:"nextLink,omitempty"`
8932
8933	// List of VpnSiteLinkConnections.
8934	Value []*VPNSiteLinkConnection `json:"value,omitempty"`
8935}
8936
8937// MarshalJSON implements the json.Marshaller interface for type ListVPNSiteLinkConnectionsResult.
8938func (l ListVPNSiteLinkConnectionsResult) MarshalJSON() ([]byte, error) {
8939	objectMap := make(map[string]interface{})
8940	populate(objectMap, "nextLink", l.NextLink)
8941	populate(objectMap, "value", l.Value)
8942	return json.Marshal(objectMap)
8943}
8944
8945// ListVPNSiteLinksResult - Result of the request to list VpnSiteLinks. It contains a list of VpnSiteLinks and a URL nextLink to get the next set of results.
8946type ListVPNSiteLinksResult struct {
8947	// URL to get the next set of operation list results if there are any.
8948	NextLink *string `json:"nextLink,omitempty"`
8949
8950	// List of VpnSitesLinks.
8951	Value []*VPNSiteLink `json:"value,omitempty"`
8952}
8953
8954// MarshalJSON implements the json.Marshaller interface for type ListVPNSiteLinksResult.
8955func (l ListVPNSiteLinksResult) MarshalJSON() ([]byte, error) {
8956	objectMap := make(map[string]interface{})
8957	populate(objectMap, "nextLink", l.NextLink)
8958	populate(objectMap, "value", l.Value)
8959	return json.Marshal(objectMap)
8960}
8961
8962// ListVPNSitesResult - Result of the request to list VpnSites. It contains a list of VpnSites and a URL nextLink to get the next set of results.
8963type ListVPNSitesResult struct {
8964	// URL to get the next set of operation list results if there are any.
8965	NextLink *string `json:"nextLink,omitempty"`
8966
8967	// List of VpnSites.
8968	Value []*VPNSite `json:"value,omitempty"`
8969}
8970
8971// MarshalJSON implements the json.Marshaller interface for type ListVPNSitesResult.
8972func (l ListVPNSitesResult) MarshalJSON() ([]byte, error) {
8973	objectMap := make(map[string]interface{})
8974	populate(objectMap, "nextLink", l.NextLink)
8975	populate(objectMap, "value", l.Value)
8976	return json.Marshal(objectMap)
8977}
8978
8979// ListVirtualHubBgpConnectionResults - VirtualHubBgpConnections list.
8980type ListVirtualHubBgpConnectionResults struct {
8981	// URL to get the next set of results.
8982	NextLink *string `json:"nextLink,omitempty"`
8983
8984	// The list of VirtualHubBgpConnections.
8985	Value []*BgpConnection `json:"value,omitempty"`
8986}
8987
8988// MarshalJSON implements the json.Marshaller interface for type ListVirtualHubBgpConnectionResults.
8989func (l ListVirtualHubBgpConnectionResults) MarshalJSON() ([]byte, error) {
8990	objectMap := make(map[string]interface{})
8991	populate(objectMap, "nextLink", l.NextLink)
8992	populate(objectMap, "value", l.Value)
8993	return json.Marshal(objectMap)
8994}
8995
8996// ListVirtualHubIPConfigurationResults - VirtualHubIpConfigurations list.
8997type ListVirtualHubIPConfigurationResults struct {
8998	// URL to get the next set of results.
8999	NextLink *string `json:"nextLink,omitempty"`
9000
9001	// The list of VirtualHubIpConfigurations.
9002	Value []*HubIPConfiguration `json:"value,omitempty"`
9003}
9004
9005// MarshalJSON implements the json.Marshaller interface for type ListVirtualHubIPConfigurationResults.
9006func (l ListVirtualHubIPConfigurationResults) MarshalJSON() ([]byte, error) {
9007	objectMap := make(map[string]interface{})
9008	populate(objectMap, "nextLink", l.NextLink)
9009	populate(objectMap, "value", l.Value)
9010	return json.Marshal(objectMap)
9011}
9012
9013// ListVirtualHubRouteTableV2SResult - List of VirtualHubRouteTableV2s and a URL nextLink to get the next set of results.
9014type ListVirtualHubRouteTableV2SResult struct {
9015	// URL to get the next set of operation list results if there are any.
9016	NextLink *string `json:"nextLink,omitempty"`
9017
9018	// List of VirtualHubRouteTableV2s.
9019	Value []*VirtualHubRouteTableV2 `json:"value,omitempty"`
9020}
9021
9022// MarshalJSON implements the json.Marshaller interface for type ListVirtualHubRouteTableV2SResult.
9023func (l ListVirtualHubRouteTableV2SResult) MarshalJSON() ([]byte, error) {
9024	objectMap := make(map[string]interface{})
9025	populate(objectMap, "nextLink", l.NextLink)
9026	populate(objectMap, "value", l.Value)
9027	return json.Marshal(objectMap)
9028}
9029
9030// ListVirtualHubsResult - Result of the request to list VirtualHubs. It contains a list of VirtualHubs and a URL nextLink to get the next set of results.
9031type ListVirtualHubsResult struct {
9032	// URL to get the next set of operation list results if there are any.
9033	NextLink *string `json:"nextLink,omitempty"`
9034
9035	// List of VirtualHubs.
9036	Value []*VirtualHub `json:"value,omitempty"`
9037}
9038
9039// MarshalJSON implements the json.Marshaller interface for type ListVirtualHubsResult.
9040func (l ListVirtualHubsResult) MarshalJSON() ([]byte, error) {
9041	objectMap := make(map[string]interface{})
9042	populate(objectMap, "nextLink", l.NextLink)
9043	populate(objectMap, "value", l.Value)
9044	return json.Marshal(objectMap)
9045}
9046
9047// ListVirtualNetworkGatewayNatRulesResult - Result of the request to list all nat rules to a virtual network gateway. It contains a list of Nat rules and
9048// a URL nextLink to get the next set of results.
9049type ListVirtualNetworkGatewayNatRulesResult struct {
9050	// URL to get the next set of operation list results if there are any.
9051	NextLink *string `json:"nextLink,omitempty"`
9052
9053	// List of Nat Rules.
9054	Value []*VirtualNetworkGatewayNatRule `json:"value,omitempty"`
9055}
9056
9057// MarshalJSON implements the json.Marshaller interface for type ListVirtualNetworkGatewayNatRulesResult.
9058func (l ListVirtualNetworkGatewayNatRulesResult) MarshalJSON() ([]byte, error) {
9059	objectMap := make(map[string]interface{})
9060	populate(objectMap, "nextLink", l.NextLink)
9061	populate(objectMap, "value", l.Value)
9062	return json.Marshal(objectMap)
9063}
9064
9065// ListVirtualWANsResult - Result of the request to list VirtualWANs. It contains a list of VirtualWANs and a URL nextLink to get the next set of results.
9066type ListVirtualWANsResult struct {
9067	// URL to get the next set of operation list results if there are any.
9068	NextLink *string `json:"nextLink,omitempty"`
9069
9070	// List of VirtualWANs.
9071	Value []*VirtualWAN `json:"value,omitempty"`
9072}
9073
9074// MarshalJSON implements the json.Marshaller interface for type ListVirtualWANsResult.
9075func (l ListVirtualWANsResult) MarshalJSON() ([]byte, error) {
9076	objectMap := make(map[string]interface{})
9077	populate(objectMap, "nextLink", l.NextLink)
9078	populate(objectMap, "value", l.Value)
9079	return json.Marshal(objectMap)
9080}
9081
9082// LoadBalancer resource.
9083type LoadBalancer struct {
9084	Resource
9085	// The extended location of the load balancer.
9086	ExtendedLocation *ExtendedLocation `json:"extendedLocation,omitempty"`
9087
9088	// Properties of load balancer.
9089	Properties *LoadBalancerPropertiesFormat `json:"properties,omitempty"`
9090
9091	// The load balancer SKU.
9092	SKU *LoadBalancerSKU `json:"sku,omitempty"`
9093
9094	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
9095	Etag *string `json:"etag,omitempty" azure:"ro"`
9096}
9097
9098// MarshalJSON implements the json.Marshaller interface for type LoadBalancer.
9099func (l LoadBalancer) MarshalJSON() ([]byte, error) {
9100	objectMap := l.Resource.marshalInternal()
9101	populate(objectMap, "etag", l.Etag)
9102	populate(objectMap, "extendedLocation", l.ExtendedLocation)
9103	populate(objectMap, "properties", l.Properties)
9104	populate(objectMap, "sku", l.SKU)
9105	return json.Marshal(objectMap)
9106}
9107
9108// LoadBalancerBackendAddress - Load balancer backend addresses.
9109type LoadBalancerBackendAddress struct {
9110	// Name of the backend address.
9111	Name *string `json:"name,omitempty"`
9112
9113	// Properties of load balancer backend address pool.
9114	Properties *LoadBalancerBackendAddressPropertiesFormat `json:"properties,omitempty"`
9115}
9116
9117// LoadBalancerBackendAddressPoolListResult - Response for ListBackendAddressPool API service call.
9118type LoadBalancerBackendAddressPoolListResult struct {
9119	// A list of backend address pools in a load balancer.
9120	Value []*BackendAddressPool `json:"value,omitempty"`
9121
9122	// READ-ONLY; The URL to get the next set of results.
9123	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
9124}
9125
9126// MarshalJSON implements the json.Marshaller interface for type LoadBalancerBackendAddressPoolListResult.
9127func (l LoadBalancerBackendAddressPoolListResult) MarshalJSON() ([]byte, error) {
9128	objectMap := make(map[string]interface{})
9129	populate(objectMap, "nextLink", l.NextLink)
9130	populate(objectMap, "value", l.Value)
9131	return json.Marshal(objectMap)
9132}
9133
9134// LoadBalancerBackendAddressPoolsBeginCreateOrUpdateOptions contains the optional parameters for the LoadBalancerBackendAddressPools.BeginCreateOrUpdate
9135// method.
9136type LoadBalancerBackendAddressPoolsBeginCreateOrUpdateOptions struct {
9137	// placeholder for future optional parameters
9138}
9139
9140// LoadBalancerBackendAddressPoolsBeginDeleteOptions contains the optional parameters for the LoadBalancerBackendAddressPools.BeginDelete method.
9141type LoadBalancerBackendAddressPoolsBeginDeleteOptions struct {
9142	// placeholder for future optional parameters
9143}
9144
9145// LoadBalancerBackendAddressPoolsGetOptions contains the optional parameters for the LoadBalancerBackendAddressPools.Get method.
9146type LoadBalancerBackendAddressPoolsGetOptions struct {
9147	// placeholder for future optional parameters
9148}
9149
9150// LoadBalancerBackendAddressPoolsListOptions contains the optional parameters for the LoadBalancerBackendAddressPools.List method.
9151type LoadBalancerBackendAddressPoolsListOptions struct {
9152	// placeholder for future optional parameters
9153}
9154
9155// LoadBalancerBackendAddressPropertiesFormat - Properties of the load balancer backend addresses.
9156type LoadBalancerBackendAddressPropertiesFormat struct {
9157	// IP Address belonging to the referenced virtual network.
9158	IPAddress *string `json:"ipAddress,omitempty"`
9159
9160	// Reference to the frontend ip address configuration defined in regional loadbalancer.
9161	LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIPConfiguration,omitempty"`
9162
9163	// Reference to an existing subnet.
9164	Subnet *SubResource `json:"subnet,omitempty"`
9165
9166	// Reference to an existing virtual network.
9167	VirtualNetwork *SubResource `json:"virtualNetwork,omitempty"`
9168
9169	// READ-ONLY; Reference to IP address defined in network interfaces.
9170	NetworkInterfaceIPConfiguration *SubResource `json:"networkInterfaceIPConfiguration,omitempty" azure:"ro"`
9171}
9172
9173// LoadBalancerFrontendIPConfigurationListResult - Response for ListFrontendIPConfiguration API service call.
9174type LoadBalancerFrontendIPConfigurationListResult struct {
9175	// A list of frontend IP configurations in a load balancer.
9176	Value []*FrontendIPConfiguration `json:"value,omitempty"`
9177
9178	// READ-ONLY; The URL to get the next set of results.
9179	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
9180}
9181
9182// MarshalJSON implements the json.Marshaller interface for type LoadBalancerFrontendIPConfigurationListResult.
9183func (l LoadBalancerFrontendIPConfigurationListResult) MarshalJSON() ([]byte, error) {
9184	objectMap := make(map[string]interface{})
9185	populate(objectMap, "nextLink", l.NextLink)
9186	populate(objectMap, "value", l.Value)
9187	return json.Marshal(objectMap)
9188}
9189
9190// LoadBalancerFrontendIPConfigurationsGetOptions contains the optional parameters for the LoadBalancerFrontendIPConfigurations.Get method.
9191type LoadBalancerFrontendIPConfigurationsGetOptions struct {
9192	// placeholder for future optional parameters
9193}
9194
9195// LoadBalancerFrontendIPConfigurationsListOptions contains the optional parameters for the LoadBalancerFrontendIPConfigurations.List method.
9196type LoadBalancerFrontendIPConfigurationsListOptions struct {
9197	// placeholder for future optional parameters
9198}
9199
9200// LoadBalancerListResult - Response for ListLoadBalancers API service call.
9201type LoadBalancerListResult struct {
9202	// A list of load balancers in a resource group.
9203	Value []*LoadBalancer `json:"value,omitempty"`
9204
9205	// READ-ONLY; The URL to get the next set of results.
9206	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
9207}
9208
9209// MarshalJSON implements the json.Marshaller interface for type LoadBalancerListResult.
9210func (l LoadBalancerListResult) MarshalJSON() ([]byte, error) {
9211	objectMap := make(map[string]interface{})
9212	populate(objectMap, "nextLink", l.NextLink)
9213	populate(objectMap, "value", l.Value)
9214	return json.Marshal(objectMap)
9215}
9216
9217// LoadBalancerLoadBalancingRuleListResult - Response for ListLoadBalancingRule API service call.
9218type LoadBalancerLoadBalancingRuleListResult struct {
9219	// A list of load balancing rules in a load balancer.
9220	Value []*LoadBalancingRule `json:"value,omitempty"`
9221
9222	// READ-ONLY; The URL to get the next set of results.
9223	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
9224}
9225
9226// MarshalJSON implements the json.Marshaller interface for type LoadBalancerLoadBalancingRuleListResult.
9227func (l LoadBalancerLoadBalancingRuleListResult) MarshalJSON() ([]byte, error) {
9228	objectMap := make(map[string]interface{})
9229	populate(objectMap, "nextLink", l.NextLink)
9230	populate(objectMap, "value", l.Value)
9231	return json.Marshal(objectMap)
9232}
9233
9234// LoadBalancerLoadBalancingRulesGetOptions contains the optional parameters for the LoadBalancerLoadBalancingRules.Get method.
9235type LoadBalancerLoadBalancingRulesGetOptions struct {
9236	// placeholder for future optional parameters
9237}
9238
9239// LoadBalancerLoadBalancingRulesListOptions contains the optional parameters for the LoadBalancerLoadBalancingRules.List method.
9240type LoadBalancerLoadBalancingRulesListOptions struct {
9241	// placeholder for future optional parameters
9242}
9243
9244// LoadBalancerNetworkInterfacesListOptions contains the optional parameters for the LoadBalancerNetworkInterfaces.List method.
9245type LoadBalancerNetworkInterfacesListOptions struct {
9246	// placeholder for future optional parameters
9247}
9248
9249// LoadBalancerOutboundRuleListResult - Response for ListOutboundRule API service call.
9250type LoadBalancerOutboundRuleListResult struct {
9251	// A list of outbound rules in a load balancer.
9252	Value []*OutboundRule `json:"value,omitempty"`
9253
9254	// READ-ONLY; The URL to get the next set of results.
9255	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
9256}
9257
9258// MarshalJSON implements the json.Marshaller interface for type LoadBalancerOutboundRuleListResult.
9259func (l LoadBalancerOutboundRuleListResult) MarshalJSON() ([]byte, error) {
9260	objectMap := make(map[string]interface{})
9261	populate(objectMap, "nextLink", l.NextLink)
9262	populate(objectMap, "value", l.Value)
9263	return json.Marshal(objectMap)
9264}
9265
9266// LoadBalancerOutboundRulesGetOptions contains the optional parameters for the LoadBalancerOutboundRules.Get method.
9267type LoadBalancerOutboundRulesGetOptions struct {
9268	// placeholder for future optional parameters
9269}
9270
9271// LoadBalancerOutboundRulesListOptions contains the optional parameters for the LoadBalancerOutboundRules.List method.
9272type LoadBalancerOutboundRulesListOptions struct {
9273	// placeholder for future optional parameters
9274}
9275
9276// LoadBalancerProbeListResult - Response for ListProbe API service call.
9277type LoadBalancerProbeListResult struct {
9278	// A list of probes in a load balancer.
9279	Value []*Probe `json:"value,omitempty"`
9280
9281	// READ-ONLY; The URL to get the next set of results.
9282	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
9283}
9284
9285// MarshalJSON implements the json.Marshaller interface for type LoadBalancerProbeListResult.
9286func (l LoadBalancerProbeListResult) MarshalJSON() ([]byte, error) {
9287	objectMap := make(map[string]interface{})
9288	populate(objectMap, "nextLink", l.NextLink)
9289	populate(objectMap, "value", l.Value)
9290	return json.Marshal(objectMap)
9291}
9292
9293// LoadBalancerProbesGetOptions contains the optional parameters for the LoadBalancerProbes.Get method.
9294type LoadBalancerProbesGetOptions struct {
9295	// placeholder for future optional parameters
9296}
9297
9298// LoadBalancerProbesListOptions contains the optional parameters for the LoadBalancerProbes.List method.
9299type LoadBalancerProbesListOptions struct {
9300	// placeholder for future optional parameters
9301}
9302
9303// LoadBalancerPropertiesFormat - Properties of the load balancer.
9304type LoadBalancerPropertiesFormat struct {
9305	// Collection of backend address pools used by a load balancer.
9306	BackendAddressPools []*BackendAddressPool `json:"backendAddressPools,omitempty"`
9307
9308	// Object representing the frontend IPs to be used for the load balancer.
9309	FrontendIPConfigurations []*FrontendIPConfiguration `json:"frontendIPConfigurations,omitempty"`
9310
9311	// Defines an external port range for inbound NAT to a single backend port on NICs associated with a load balancer. Inbound NAT rules are created automatically
9312	// for each NIC associated with the Load
9313	// Balancer using an external port from this range. Defining an Inbound NAT pool on your Load Balancer is mutually exclusive with defining inbound Nat rules.
9314	// Inbound NAT pools are referenced from virtual
9315	// machine scale sets. NICs that are associated with individual virtual machines cannot reference an inbound NAT pool. They have to reference individual
9316	// inbound NAT rules.
9317	InboundNatPools []*InboundNatPool `json:"inboundNatPools,omitempty"`
9318
9319	// Collection of inbound NAT Rules used by a load balancer. Defining inbound NAT rules on your load balancer is mutually exclusive with defining an inbound
9320	// NAT pool. Inbound NAT pools are referenced from
9321	// virtual machine scale sets. NICs that are associated with individual virtual machines cannot reference an Inbound NAT pool. They have to reference individual
9322	// inbound NAT rules.
9323	InboundNatRules []*InboundNatRule `json:"inboundNatRules,omitempty"`
9324
9325	// Object collection representing the load balancing rules Gets the provisioning.
9326	LoadBalancingRules []*LoadBalancingRule `json:"loadBalancingRules,omitempty"`
9327
9328	// The outbound rules.
9329	OutboundRules []*OutboundRule `json:"outboundRules,omitempty"`
9330
9331	// Collection of probe objects used in the load balancer.
9332	Probes []*Probe `json:"probes,omitempty"`
9333
9334	// READ-ONLY; The provisioning state of the load balancer resource.
9335	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
9336
9337	// READ-ONLY; The resource GUID property of the load balancer resource.
9338	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
9339}
9340
9341// MarshalJSON implements the json.Marshaller interface for type LoadBalancerPropertiesFormat.
9342func (l LoadBalancerPropertiesFormat) MarshalJSON() ([]byte, error) {
9343	objectMap := make(map[string]interface{})
9344	populate(objectMap, "backendAddressPools", l.BackendAddressPools)
9345	populate(objectMap, "frontendIPConfigurations", l.FrontendIPConfigurations)
9346	populate(objectMap, "inboundNatPools", l.InboundNatPools)
9347	populate(objectMap, "inboundNatRules", l.InboundNatRules)
9348	populate(objectMap, "loadBalancingRules", l.LoadBalancingRules)
9349	populate(objectMap, "outboundRules", l.OutboundRules)
9350	populate(objectMap, "probes", l.Probes)
9351	populate(objectMap, "provisioningState", l.ProvisioningState)
9352	populate(objectMap, "resourceGuid", l.ResourceGUID)
9353	return json.Marshal(objectMap)
9354}
9355
9356// LoadBalancerSKU - SKU of a load balancer.
9357type LoadBalancerSKU struct {
9358	// Name of a load balancer SKU.
9359	Name *LoadBalancerSKUName `json:"name,omitempty"`
9360
9361	// Tier of a load balancer SKU.
9362	Tier *LoadBalancerSKUTier `json:"tier,omitempty"`
9363}
9364
9365// LoadBalancerVipSwapRequest - The request for a VIP swap.
9366type LoadBalancerVipSwapRequest struct {
9367	// A list of frontend IP configuration resources that should swap VIPs.
9368	FrontendIPConfigurations []*LoadBalancerVipSwapRequestFrontendIPConfiguration `json:"frontendIPConfigurations,omitempty"`
9369}
9370
9371// MarshalJSON implements the json.Marshaller interface for type LoadBalancerVipSwapRequest.
9372func (l LoadBalancerVipSwapRequest) MarshalJSON() ([]byte, error) {
9373	objectMap := make(map[string]interface{})
9374	populate(objectMap, "frontendIPConfigurations", l.FrontendIPConfigurations)
9375	return json.Marshal(objectMap)
9376}
9377
9378// LoadBalancerVipSwapRequestFrontendIPConfiguration - VIP swap request's frontend IP configuration object.
9379type LoadBalancerVipSwapRequestFrontendIPConfiguration struct {
9380	// The ID of frontend IP configuration resource.
9381	ID *string `json:"id,omitempty"`
9382
9383	// The properties of VIP swap request's frontend IP configuration object.
9384	Properties *LoadBalancerVipSwapRequestFrontendIPConfigurationProperties `json:"properties,omitempty"`
9385}
9386
9387// LoadBalancerVipSwapRequestFrontendIPConfigurationProperties - The properties of VIP swap request's frontend IP configuration object.
9388type LoadBalancerVipSwapRequestFrontendIPConfigurationProperties struct {
9389	// A reference to public IP address resource.
9390	PublicIPAddress *SubResource `json:"publicIPAddress,omitempty"`
9391}
9392
9393// LoadBalancersBeginCreateOrUpdateOptions contains the optional parameters for the LoadBalancers.BeginCreateOrUpdate method.
9394type LoadBalancersBeginCreateOrUpdateOptions struct {
9395	// placeholder for future optional parameters
9396}
9397
9398// LoadBalancersBeginDeleteOptions contains the optional parameters for the LoadBalancers.BeginDelete method.
9399type LoadBalancersBeginDeleteOptions struct {
9400	// placeholder for future optional parameters
9401}
9402
9403// LoadBalancersBeginSwapPublicIPAddressesOptions contains the optional parameters for the LoadBalancers.BeginSwapPublicIPAddresses method.
9404type LoadBalancersBeginSwapPublicIPAddressesOptions struct {
9405	// placeholder for future optional parameters
9406}
9407
9408// LoadBalancersGetOptions contains the optional parameters for the LoadBalancers.Get method.
9409type LoadBalancersGetOptions struct {
9410	// Expands referenced resources.
9411	Expand *string
9412}
9413
9414// LoadBalancersListAllOptions contains the optional parameters for the LoadBalancers.ListAll method.
9415type LoadBalancersListAllOptions struct {
9416	// placeholder for future optional parameters
9417}
9418
9419// LoadBalancersListOptions contains the optional parameters for the LoadBalancers.List method.
9420type LoadBalancersListOptions struct {
9421	// placeholder for future optional parameters
9422}
9423
9424// LoadBalancersUpdateTagsOptions contains the optional parameters for the LoadBalancers.UpdateTags method.
9425type LoadBalancersUpdateTagsOptions struct {
9426	// placeholder for future optional parameters
9427}
9428
9429// LoadBalancingRule - A load balancing rule for a load balancer.
9430type LoadBalancingRule struct {
9431	SubResource
9432	// The name of the resource that is unique within the set of load balancing rules used by the load balancer. This name can be used to access the resource.
9433	Name *string `json:"name,omitempty"`
9434
9435	// Properties of load balancer load balancing rule.
9436	Properties *LoadBalancingRulePropertiesFormat `json:"properties,omitempty"`
9437
9438	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
9439	Etag *string `json:"etag,omitempty" azure:"ro"`
9440
9441	// READ-ONLY; Type of the resource.
9442	Type *string `json:"type,omitempty" azure:"ro"`
9443}
9444
9445// MarshalJSON implements the json.Marshaller interface for type LoadBalancingRule.
9446func (l LoadBalancingRule) MarshalJSON() ([]byte, error) {
9447	objectMap := l.SubResource.marshalInternal()
9448	populate(objectMap, "etag", l.Etag)
9449	populate(objectMap, "name", l.Name)
9450	populate(objectMap, "properties", l.Properties)
9451	populate(objectMap, "type", l.Type)
9452	return json.Marshal(objectMap)
9453}
9454
9455// LoadBalancingRulePropertiesFormat - Properties of the load balancer.
9456type LoadBalancingRulePropertiesFormat struct {
9457	// REQUIRED; The port for the external endpoint. Port numbers for each rule must be unique within the Load Balancer. Acceptable values are between 0 and
9458	// 65534. Note that value 0 enables "Any Port".
9459	FrontendPort *int32 `json:"frontendPort,omitempty"`
9460
9461	// REQUIRED; The reference to the transport protocol used by the load balancing rule.
9462	Protocol *TransportProtocol `json:"protocol,omitempty"`
9463
9464	// A reference to a pool of DIPs. Inbound traffic is randomly load balanced across IPs in the backend IPs.
9465	BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"`
9466
9467	// An array of references to pool of DIPs.
9468	BackendAddressPools []*SubResource `json:"backendAddressPools,omitempty"`
9469
9470	// The port used for internal connections on the endpoint. Acceptable values are between 0 and 65535. Note that value 0 enables "Any Port".
9471	BackendPort *int32 `json:"backendPort,omitempty"`
9472
9473	// Configures SNAT for the VMs in the backend pool to use the publicIP address specified in the frontend of the load balancing rule.
9474	DisableOutboundSnat *bool `json:"disableOutboundSnat,omitempty"`
9475
9476	// Configures a virtual machine's endpoint for the floating IP capability required to configure a SQL AlwaysOn Availability Group. This setting is required
9477	// when using the SQL AlwaysOn Availability Groups
9478	// in SQL server. This setting can't be changed after you create the endpoint.
9479	EnableFloatingIP *bool `json:"enableFloatingIP,omitempty"`
9480
9481	// Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected connection termination. This element is only used when the protocol is set to
9482	// TCP.
9483	EnableTCPReset *bool `json:"enableTcpReset,omitempty"`
9484
9485	// A reference to frontend IP addresses.
9486	FrontendIPConfiguration *SubResource `json:"frontendIPConfiguration,omitempty"`
9487
9488	// The timeout for the TCP idle connection. The value can be set between 4 and 30 minutes. The default value is 4 minutes. This element is only used when
9489	// the protocol is set to TCP.
9490	IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"`
9491
9492	// The load distribution policy for this rule.
9493	LoadDistribution *LoadDistribution `json:"loadDistribution,omitempty"`
9494
9495	// The reference to the load balancer probe used by the load balancing rule.
9496	Probe *SubResource `json:"probe,omitempty"`
9497
9498	// READ-ONLY; The provisioning state of the load balancing rule resource.
9499	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
9500}
9501
9502// MarshalJSON implements the json.Marshaller interface for type LoadBalancingRulePropertiesFormat.
9503func (l LoadBalancingRulePropertiesFormat) MarshalJSON() ([]byte, error) {
9504	objectMap := make(map[string]interface{})
9505	populate(objectMap, "backendAddressPool", l.BackendAddressPool)
9506	populate(objectMap, "backendAddressPools", l.BackendAddressPools)
9507	populate(objectMap, "backendPort", l.BackendPort)
9508	populate(objectMap, "disableOutboundSnat", l.DisableOutboundSnat)
9509	populate(objectMap, "enableFloatingIP", l.EnableFloatingIP)
9510	populate(objectMap, "enableTcpReset", l.EnableTCPReset)
9511	populate(objectMap, "frontendIPConfiguration", l.FrontendIPConfiguration)
9512	populate(objectMap, "frontendPort", l.FrontendPort)
9513	populate(objectMap, "idleTimeoutInMinutes", l.IdleTimeoutInMinutes)
9514	populate(objectMap, "loadDistribution", l.LoadDistribution)
9515	populate(objectMap, "probe", l.Probe)
9516	populate(objectMap, "protocol", l.Protocol)
9517	populate(objectMap, "provisioningState", l.ProvisioningState)
9518	return json.Marshal(objectMap)
9519}
9520
9521// LocalNetworkGateway - A common class for general resource information.
9522type LocalNetworkGateway struct {
9523	Resource
9524	// REQUIRED; Properties of the local network gateway.
9525	Properties *LocalNetworkGatewayPropertiesFormat `json:"properties,omitempty"`
9526
9527	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
9528	Etag *string `json:"etag,omitempty" azure:"ro"`
9529}
9530
9531// MarshalJSON implements the json.Marshaller interface for type LocalNetworkGateway.
9532func (l LocalNetworkGateway) MarshalJSON() ([]byte, error) {
9533	objectMap := l.Resource.marshalInternal()
9534	populate(objectMap, "etag", l.Etag)
9535	populate(objectMap, "properties", l.Properties)
9536	return json.Marshal(objectMap)
9537}
9538
9539// LocalNetworkGatewayListResult - Response for ListLocalNetworkGateways API service call.
9540type LocalNetworkGatewayListResult struct {
9541	// A list of local network gateways that exists in a resource group.
9542	Value []*LocalNetworkGateway `json:"value,omitempty"`
9543
9544	// READ-ONLY; The URL to get the next set of results.
9545	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
9546}
9547
9548// MarshalJSON implements the json.Marshaller interface for type LocalNetworkGatewayListResult.
9549func (l LocalNetworkGatewayListResult) MarshalJSON() ([]byte, error) {
9550	objectMap := make(map[string]interface{})
9551	populate(objectMap, "nextLink", l.NextLink)
9552	populate(objectMap, "value", l.Value)
9553	return json.Marshal(objectMap)
9554}
9555
9556// LocalNetworkGatewayPropertiesFormat - LocalNetworkGateway properties.
9557type LocalNetworkGatewayPropertiesFormat struct {
9558	// Local network gateway's BGP speaker settings.
9559	BgpSettings *BgpSettings `json:"bgpSettings,omitempty"`
9560
9561	// FQDN of local network gateway.
9562	Fqdn *string `json:"fqdn,omitempty"`
9563
9564	// IP address of local network gateway.
9565	GatewayIPAddress *string `json:"gatewayIpAddress,omitempty"`
9566
9567	// Local network site address space.
9568	LocalNetworkAddressSpace *AddressSpace `json:"localNetworkAddressSpace,omitempty"`
9569
9570	// READ-ONLY; The provisioning state of the local network gateway resource.
9571	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
9572
9573	// READ-ONLY; The resource GUID property of the local network gateway resource.
9574	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
9575}
9576
9577// LocalNetworkGatewaysBeginCreateOrUpdateOptions contains the optional parameters for the LocalNetworkGateways.BeginCreateOrUpdate method.
9578type LocalNetworkGatewaysBeginCreateOrUpdateOptions struct {
9579	// placeholder for future optional parameters
9580}
9581
9582// LocalNetworkGatewaysBeginDeleteOptions contains the optional parameters for the LocalNetworkGateways.BeginDelete method.
9583type LocalNetworkGatewaysBeginDeleteOptions struct {
9584	// placeholder for future optional parameters
9585}
9586
9587// LocalNetworkGatewaysGetOptions contains the optional parameters for the LocalNetworkGateways.Get method.
9588type LocalNetworkGatewaysGetOptions struct {
9589	// placeholder for future optional parameters
9590}
9591
9592// LocalNetworkGatewaysListOptions contains the optional parameters for the LocalNetworkGateways.List method.
9593type LocalNetworkGatewaysListOptions struct {
9594	// placeholder for future optional parameters
9595}
9596
9597// LocalNetworkGatewaysUpdateTagsOptions contains the optional parameters for the LocalNetworkGateways.UpdateTags method.
9598type LocalNetworkGatewaysUpdateTagsOptions struct {
9599	// placeholder for future optional parameters
9600}
9601
9602// LogSpecification - Description of logging specification.
9603type LogSpecification struct {
9604	// Duration of the blob.
9605	BlobDuration *string `json:"blobDuration,omitempty"`
9606
9607	// The display name of the specification.
9608	DisplayName *string `json:"displayName,omitempty"`
9609
9610	// The name of the specification.
9611	Name *string `json:"name,omitempty"`
9612}
9613
9614// ManagedRuleGroupOverride - Defines a managed rule group override setting.
9615type ManagedRuleGroupOverride struct {
9616	// REQUIRED; The managed rule group to override.
9617	RuleGroupName *string `json:"ruleGroupName,omitempty"`
9618
9619	// List of rules that will be disabled. If none specified, all rules in the group will be disabled.
9620	Rules []*ManagedRuleOverride `json:"rules,omitempty"`
9621}
9622
9623// MarshalJSON implements the json.Marshaller interface for type ManagedRuleGroupOverride.
9624func (m ManagedRuleGroupOverride) MarshalJSON() ([]byte, error) {
9625	objectMap := make(map[string]interface{})
9626	populate(objectMap, "ruleGroupName", m.RuleGroupName)
9627	populate(objectMap, "rules", m.Rules)
9628	return json.Marshal(objectMap)
9629}
9630
9631// ManagedRuleOverride - Defines a managed rule group override setting.
9632type ManagedRuleOverride struct {
9633	// REQUIRED; Identifier for the managed rule.
9634	RuleID *string `json:"ruleId,omitempty"`
9635
9636	// The state of the managed rule. Defaults to Disabled if not specified.
9637	State *ManagedRuleEnabledState `json:"state,omitempty"`
9638}
9639
9640// ManagedRuleSet - Defines a managed rule set.
9641type ManagedRuleSet struct {
9642	// REQUIRED; Defines the rule set type to use.
9643	RuleSetType *string `json:"ruleSetType,omitempty"`
9644
9645	// REQUIRED; Defines the version of the rule set to use.
9646	RuleSetVersion *string `json:"ruleSetVersion,omitempty"`
9647
9648	// Defines the rule group overrides to apply to the rule set.
9649	RuleGroupOverrides []*ManagedRuleGroupOverride `json:"ruleGroupOverrides,omitempty"`
9650}
9651
9652// MarshalJSON implements the json.Marshaller interface for type ManagedRuleSet.
9653func (m ManagedRuleSet) MarshalJSON() ([]byte, error) {
9654	objectMap := make(map[string]interface{})
9655	populate(objectMap, "ruleGroupOverrides", m.RuleGroupOverrides)
9656	populate(objectMap, "ruleSetType", m.RuleSetType)
9657	populate(objectMap, "ruleSetVersion", m.RuleSetVersion)
9658	return json.Marshal(objectMap)
9659}
9660
9661// ManagedRulesDefinition - Allow to exclude some variable satisfy the condition for the WAF check.
9662type ManagedRulesDefinition struct {
9663	// REQUIRED; The managed rule sets that are associated with the policy.
9664	ManagedRuleSets []*ManagedRuleSet `json:"managedRuleSets,omitempty"`
9665
9666	// The Exclusions that are applied on the policy.
9667	Exclusions []*OwaspCrsExclusionEntry `json:"exclusions,omitempty"`
9668}
9669
9670// MarshalJSON implements the json.Marshaller interface for type ManagedRulesDefinition.
9671func (m ManagedRulesDefinition) MarshalJSON() ([]byte, error) {
9672	objectMap := make(map[string]interface{})
9673	populate(objectMap, "exclusions", m.Exclusions)
9674	populate(objectMap, "managedRuleSets", m.ManagedRuleSets)
9675	return json.Marshal(objectMap)
9676}
9677
9678// ManagedServiceIdentity - Identity for the resource.
9679type ManagedServiceIdentity struct {
9680	// The type of identity used for the resource. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user assigned
9681	// identities. The type 'None' will remove any
9682	// identities from the virtual machine.
9683	Type *ResourceIdentityType `json:"type,omitempty"`
9684
9685	// The list of user identities associated with resource. The user identity dictionary key references will be ARM resource ids in the form:
9686	// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'.
9687	UserAssignedIdentities map[string]*Components1Jq1T4ISchemasManagedserviceidentityPropertiesUserassignedidentitiesAdditionalproperties `json:"userAssignedIdentities,omitempty"`
9688
9689	// READ-ONLY; The principal id of the system assigned identity. This property will only be provided for a system assigned identity.
9690	PrincipalID *string `json:"principalId,omitempty" azure:"ro"`
9691
9692	// READ-ONLY; The tenant id of the system assigned identity. This property will only be provided for a system assigned identity.
9693	TenantID *string `json:"tenantId,omitempty" azure:"ro"`
9694}
9695
9696// MarshalJSON implements the json.Marshaller interface for type ManagedServiceIdentity.
9697func (m ManagedServiceIdentity) MarshalJSON() ([]byte, error) {
9698	objectMap := make(map[string]interface{})
9699	populate(objectMap, "principalId", m.PrincipalID)
9700	populate(objectMap, "tenantId", m.TenantID)
9701	populate(objectMap, "type", m.Type)
9702	populate(objectMap, "userAssignedIdentities", m.UserAssignedIdentities)
9703	return json.Marshal(objectMap)
9704}
9705
9706// MatchCondition - Define match conditions.
9707type MatchCondition struct {
9708	// REQUIRED; Match value.
9709	MatchValues []*string `json:"matchValues,omitempty"`
9710
9711	// REQUIRED; List of match variables.
9712	MatchVariables []*MatchVariable `json:"matchVariables,omitempty"`
9713
9714	// REQUIRED; The operator to be matched.
9715	Operator *WebApplicationFirewallOperator `json:"operator,omitempty"`
9716
9717	// Whether this is negate condition or not.
9718	NegationConditon *bool `json:"negationConditon,omitempty"`
9719
9720	// List of transforms.
9721	Transforms []*WebApplicationFirewallTransform `json:"transforms,omitempty"`
9722}
9723
9724// MarshalJSON implements the json.Marshaller interface for type MatchCondition.
9725func (m MatchCondition) MarshalJSON() ([]byte, error) {
9726	objectMap := make(map[string]interface{})
9727	populate(objectMap, "matchValues", m.MatchValues)
9728	populate(objectMap, "matchVariables", m.MatchVariables)
9729	populate(objectMap, "negationConditon", m.NegationConditon)
9730	populate(objectMap, "operator", m.Operator)
9731	populate(objectMap, "transforms", m.Transforms)
9732	return json.Marshal(objectMap)
9733}
9734
9735// MatchVariable - Define match variables.
9736type MatchVariable struct {
9737	// REQUIRED; Match Variable.
9738	VariableName *WebApplicationFirewallMatchVariable `json:"variableName,omitempty"`
9739
9740	// The selector of match variable.
9741	Selector *string `json:"selector,omitempty"`
9742}
9743
9744// MatchedRule - Matched rule.
9745type MatchedRule struct {
9746	// The network traffic is allowed or denied. Possible values are 'Allow' and 'Deny'.
9747	Action *string `json:"action,omitempty"`
9748
9749	// Name of the matched network security rule.
9750	RuleName *string `json:"ruleName,omitempty"`
9751}
9752
9753// MetricSpecification - Description of metrics specification.
9754type MetricSpecification struct {
9755	// The aggregation type.
9756	AggregationType *string `json:"aggregationType,omitempty"`
9757
9758	// List of availability.
9759	Availabilities []*Availability `json:"availabilities,omitempty"`
9760
9761	// List of dimensions.
9762	Dimensions []*Dimension `json:"dimensions,omitempty"`
9763
9764	// The description of the metric.
9765	DisplayDescription *string `json:"displayDescription,omitempty"`
9766
9767	// The display name of the metric.
9768	DisplayName *string `json:"displayName,omitempty"`
9769
9770	// Whether regional MDM account enabled.
9771	EnableRegionalMdmAccount *bool `json:"enableRegionalMdmAccount,omitempty"`
9772
9773	// Whether gaps would be filled with zeros.
9774	FillGapWithZero *bool `json:"fillGapWithZero,omitempty"`
9775
9776	// Whether the metric is internal.
9777	IsInternal *bool `json:"isInternal,omitempty"`
9778
9779	// Pattern for the filter of the metric.
9780	MetricFilterPattern *string `json:"metricFilterPattern,omitempty"`
9781
9782	// The name of the metric.
9783	Name *string `json:"name,omitempty"`
9784
9785	// The resource Id dimension name override.
9786	ResourceIDDimensionNameOverride *string `json:"resourceIdDimensionNameOverride,omitempty"`
9787
9788	// The source MDM account.
9789	SourceMdmAccount *string `json:"sourceMdmAccount,omitempty"`
9790
9791	// The source MDM namespace.
9792	SourceMdmNamespace *string `json:"sourceMdmNamespace,omitempty"`
9793
9794	// Units the metric to be displayed in.
9795	Unit *string `json:"unit,omitempty"`
9796}
9797
9798// MarshalJSON implements the json.Marshaller interface for type MetricSpecification.
9799func (m MetricSpecification) MarshalJSON() ([]byte, error) {
9800	objectMap := make(map[string]interface{})
9801	populate(objectMap, "aggregationType", m.AggregationType)
9802	populate(objectMap, "availabilities", m.Availabilities)
9803	populate(objectMap, "dimensions", m.Dimensions)
9804	populate(objectMap, "displayDescription", m.DisplayDescription)
9805	populate(objectMap, "displayName", m.DisplayName)
9806	populate(objectMap, "enableRegionalMdmAccount", m.EnableRegionalMdmAccount)
9807	populate(objectMap, "fillGapWithZero", m.FillGapWithZero)
9808	populate(objectMap, "isInternal", m.IsInternal)
9809	populate(objectMap, "metricFilterPattern", m.MetricFilterPattern)
9810	populate(objectMap, "name", m.Name)
9811	populate(objectMap, "resourceIdDimensionNameOverride", m.ResourceIDDimensionNameOverride)
9812	populate(objectMap, "sourceMdmAccount", m.SourceMdmAccount)
9813	populate(objectMap, "sourceMdmNamespace", m.SourceMdmNamespace)
9814	populate(objectMap, "unit", m.Unit)
9815	return json.Marshal(objectMap)
9816}
9817
9818// NatGateway - Nat Gateway resource.
9819type NatGateway struct {
9820	Resource
9821	// Nat Gateway properties.
9822	Properties *NatGatewayPropertiesFormat `json:"properties,omitempty"`
9823
9824	// The nat gateway SKU.
9825	SKU *NatGatewaySKU `json:"sku,omitempty"`
9826
9827	// A list of availability zones denoting the zone in which Nat Gateway should be deployed.
9828	Zones []*string `json:"zones,omitempty"`
9829
9830	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
9831	Etag *string `json:"etag,omitempty" azure:"ro"`
9832}
9833
9834// MarshalJSON implements the json.Marshaller interface for type NatGateway.
9835func (n NatGateway) MarshalJSON() ([]byte, error) {
9836	objectMap := n.Resource.marshalInternal()
9837	populate(objectMap, "etag", n.Etag)
9838	populate(objectMap, "properties", n.Properties)
9839	populate(objectMap, "sku", n.SKU)
9840	populate(objectMap, "zones", n.Zones)
9841	return json.Marshal(objectMap)
9842}
9843
9844// NatGatewayListResult - Response for ListNatGateways API service call.
9845type NatGatewayListResult struct {
9846	// The URL to get the next set of results.
9847	NextLink *string `json:"nextLink,omitempty"`
9848
9849	// A list of Nat Gateways that exists in a resource group.
9850	Value []*NatGateway `json:"value,omitempty"`
9851}
9852
9853// MarshalJSON implements the json.Marshaller interface for type NatGatewayListResult.
9854func (n NatGatewayListResult) MarshalJSON() ([]byte, error) {
9855	objectMap := make(map[string]interface{})
9856	populate(objectMap, "nextLink", n.NextLink)
9857	populate(objectMap, "value", n.Value)
9858	return json.Marshal(objectMap)
9859}
9860
9861// NatGatewayPropertiesFormat - Nat Gateway properties.
9862type NatGatewayPropertiesFormat struct {
9863	// The idle timeout of the nat gateway.
9864	IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"`
9865
9866	// An array of public ip addresses associated with the nat gateway resource.
9867	PublicIPAddresses []*SubResource `json:"publicIpAddresses,omitempty"`
9868
9869	// An array of public ip prefixes associated with the nat gateway resource.
9870	PublicIPPrefixes []*SubResource `json:"publicIpPrefixes,omitempty"`
9871
9872	// READ-ONLY; The provisioning state of the NAT gateway resource.
9873	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
9874
9875	// READ-ONLY; The resource GUID property of the NAT gateway resource.
9876	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
9877
9878	// READ-ONLY; An array of references to the subnets using this nat gateway resource.
9879	Subnets []*SubResource `json:"subnets,omitempty" azure:"ro"`
9880}
9881
9882// MarshalJSON implements the json.Marshaller interface for type NatGatewayPropertiesFormat.
9883func (n NatGatewayPropertiesFormat) MarshalJSON() ([]byte, error) {
9884	objectMap := make(map[string]interface{})
9885	populate(objectMap, "idleTimeoutInMinutes", n.IdleTimeoutInMinutes)
9886	populate(objectMap, "provisioningState", n.ProvisioningState)
9887	populate(objectMap, "publicIpAddresses", n.PublicIPAddresses)
9888	populate(objectMap, "publicIpPrefixes", n.PublicIPPrefixes)
9889	populate(objectMap, "resourceGuid", n.ResourceGUID)
9890	populate(objectMap, "subnets", n.Subnets)
9891	return json.Marshal(objectMap)
9892}
9893
9894// NatGatewaySKU - SKU of nat gateway.
9895type NatGatewaySKU struct {
9896	// Name of Nat Gateway SKU.
9897	Name *NatGatewaySKUName `json:"name,omitempty"`
9898}
9899
9900// NatGatewaysBeginCreateOrUpdateOptions contains the optional parameters for the NatGateways.BeginCreateOrUpdate method.
9901type NatGatewaysBeginCreateOrUpdateOptions struct {
9902	// placeholder for future optional parameters
9903}
9904
9905// NatGatewaysBeginDeleteOptions contains the optional parameters for the NatGateways.BeginDelete method.
9906type NatGatewaysBeginDeleteOptions struct {
9907	// placeholder for future optional parameters
9908}
9909
9910// NatGatewaysGetOptions contains the optional parameters for the NatGateways.Get method.
9911type NatGatewaysGetOptions struct {
9912	// Expands referenced resources.
9913	Expand *string
9914}
9915
9916// NatGatewaysListAllOptions contains the optional parameters for the NatGateways.ListAll method.
9917type NatGatewaysListAllOptions struct {
9918	// placeholder for future optional parameters
9919}
9920
9921// NatGatewaysListOptions contains the optional parameters for the NatGateways.List method.
9922type NatGatewaysListOptions struct {
9923	// placeholder for future optional parameters
9924}
9925
9926// NatGatewaysUpdateTagsOptions contains the optional parameters for the NatGateways.UpdateTags method.
9927type NatGatewaysUpdateTagsOptions struct {
9928	// placeholder for future optional parameters
9929}
9930
9931// NatRule - Rule of type nat.
9932type NatRule struct {
9933	FirewallPolicyRule
9934	// List of destination IP addresses or Service Tags.
9935	DestinationAddresses []*string `json:"destinationAddresses,omitempty"`
9936
9937	// List of destination ports.
9938	DestinationPorts []*string `json:"destinationPorts,omitempty"`
9939
9940	// Array of FirewallPolicyRuleNetworkProtocols.
9941	IPProtocols []*FirewallPolicyRuleNetworkProtocol `json:"ipProtocols,omitempty"`
9942
9943	// List of source IP addresses for this rule.
9944	SourceAddresses []*string `json:"sourceAddresses,omitempty"`
9945
9946	// List of source IpGroups for this rule.
9947	SourceIPGroups []*string `json:"sourceIpGroups,omitempty"`
9948
9949	// The translated address for this NAT rule.
9950	TranslatedAddress *string `json:"translatedAddress,omitempty"`
9951
9952	// The translated FQDN for this NAT rule.
9953	TranslatedFqdn *string `json:"translatedFqdn,omitempty"`
9954
9955	// The translated port for this NAT rule.
9956	TranslatedPort *string `json:"translatedPort,omitempty"`
9957}
9958
9959// MarshalJSON implements the json.Marshaller interface for type NatRule.
9960func (n NatRule) MarshalJSON() ([]byte, error) {
9961	objectMap := n.FirewallPolicyRule.marshalInternal(FirewallPolicyRuleTypeNatRule)
9962	populate(objectMap, "destinationAddresses", n.DestinationAddresses)
9963	populate(objectMap, "destinationPorts", n.DestinationPorts)
9964	populate(objectMap, "ipProtocols", n.IPProtocols)
9965	populate(objectMap, "sourceAddresses", n.SourceAddresses)
9966	populate(objectMap, "sourceIpGroups", n.SourceIPGroups)
9967	populate(objectMap, "translatedAddress", n.TranslatedAddress)
9968	populate(objectMap, "translatedFqdn", n.TranslatedFqdn)
9969	populate(objectMap, "translatedPort", n.TranslatedPort)
9970	return json.Marshal(objectMap)
9971}
9972
9973// UnmarshalJSON implements the json.Unmarshaller interface for type NatRule.
9974func (n *NatRule) UnmarshalJSON(data []byte) error {
9975	var rawMsg map[string]json.RawMessage
9976	if err := json.Unmarshal(data, &rawMsg); err != nil {
9977		return err
9978	}
9979	for key, val := range rawMsg {
9980		var err error
9981		switch key {
9982		case "destinationAddresses":
9983			err = unpopulate(val, &n.DestinationAddresses)
9984			delete(rawMsg, key)
9985		case "destinationPorts":
9986			err = unpopulate(val, &n.DestinationPorts)
9987			delete(rawMsg, key)
9988		case "ipProtocols":
9989			err = unpopulate(val, &n.IPProtocols)
9990			delete(rawMsg, key)
9991		case "sourceAddresses":
9992			err = unpopulate(val, &n.SourceAddresses)
9993			delete(rawMsg, key)
9994		case "sourceIpGroups":
9995			err = unpopulate(val, &n.SourceIPGroups)
9996			delete(rawMsg, key)
9997		case "translatedAddress":
9998			err = unpopulate(val, &n.TranslatedAddress)
9999			delete(rawMsg, key)
10000		case "translatedFqdn":
10001			err = unpopulate(val, &n.TranslatedFqdn)
10002			delete(rawMsg, key)
10003		case "translatedPort":
10004			err = unpopulate(val, &n.TranslatedPort)
10005			delete(rawMsg, key)
10006		}
10007		if err != nil {
10008			return err
10009		}
10010	}
10011	return n.FirewallPolicyRule.unmarshalInternal(rawMsg)
10012}
10013
10014// NatRulesBeginCreateOrUpdateOptions contains the optional parameters for the NatRules.BeginCreateOrUpdate method.
10015type NatRulesBeginCreateOrUpdateOptions struct {
10016	// placeholder for future optional parameters
10017}
10018
10019// NatRulesBeginDeleteOptions contains the optional parameters for the NatRules.BeginDelete method.
10020type NatRulesBeginDeleteOptions struct {
10021	// placeholder for future optional parameters
10022}
10023
10024// NatRulesGetOptions contains the optional parameters for the NatRules.Get method.
10025type NatRulesGetOptions struct {
10026	// placeholder for future optional parameters
10027}
10028
10029// NatRulesListByVPNGatewayOptions contains the optional parameters for the NatRules.ListByVPNGateway method.
10030type NatRulesListByVPNGatewayOptions struct {
10031	// placeholder for future optional parameters
10032}
10033
10034// NetworkConfigurationDiagnosticParameters - Parameters to get network configuration diagnostic.
10035type NetworkConfigurationDiagnosticParameters struct {
10036	// REQUIRED; List of network configuration diagnostic profiles.
10037	Profiles []*NetworkConfigurationDiagnosticProfile `json:"profiles,omitempty"`
10038
10039	// REQUIRED; The ID of the target resource to perform network configuration diagnostic. Valid options are VM, NetworkInterface, VMSS/NetworkInterface and
10040	// Application Gateway.
10041	TargetResourceID *string `json:"targetResourceId,omitempty"`
10042
10043	// Verbosity level.
10044	VerbosityLevel *VerbosityLevel `json:"verbosityLevel,omitempty"`
10045}
10046
10047// MarshalJSON implements the json.Marshaller interface for type NetworkConfigurationDiagnosticParameters.
10048func (n NetworkConfigurationDiagnosticParameters) MarshalJSON() ([]byte, error) {
10049	objectMap := make(map[string]interface{})
10050	populate(objectMap, "profiles", n.Profiles)
10051	populate(objectMap, "targetResourceId", n.TargetResourceID)
10052	populate(objectMap, "verbosityLevel", n.VerbosityLevel)
10053	return json.Marshal(objectMap)
10054}
10055
10056// NetworkConfigurationDiagnosticProfile - Parameters to compare with network configuration.
10057type NetworkConfigurationDiagnosticProfile struct {
10058	// REQUIRED; Traffic destination. Accepted values are: '*', IP Address/CIDR, Service Tag.
10059	Destination *string `json:"destination,omitempty"`
10060
10061	// REQUIRED; Traffic destination port. Accepted values are '*' and a single port in the range (0 - 65535).
10062	DestinationPort *string `json:"destinationPort,omitempty"`
10063
10064	// REQUIRED; The direction of the traffic.
10065	Direction *Direction `json:"direction,omitempty"`
10066
10067	// REQUIRED; Protocol to be verified on. Accepted values are '*', TCP, UDP.
10068	Protocol *string `json:"protocol,omitempty"`
10069
10070	// REQUIRED; Traffic source. Accepted values are '*', IP Address/CIDR, Service Tag.
10071	Source *string `json:"source,omitempty"`
10072}
10073
10074// NetworkConfigurationDiagnosticResponse - Results of network configuration diagnostic on the target resource.
10075type NetworkConfigurationDiagnosticResponse struct {
10076	// READ-ONLY; List of network configuration diagnostic results.
10077	Results []*NetworkConfigurationDiagnosticResult `json:"results,omitempty" azure:"ro"`
10078}
10079
10080// MarshalJSON implements the json.Marshaller interface for type NetworkConfigurationDiagnosticResponse.
10081func (n NetworkConfigurationDiagnosticResponse) MarshalJSON() ([]byte, error) {
10082	objectMap := make(map[string]interface{})
10083	populate(objectMap, "results", n.Results)
10084	return json.Marshal(objectMap)
10085}
10086
10087// NetworkConfigurationDiagnosticResult - Network configuration diagnostic result corresponded to provided traffic query.
10088type NetworkConfigurationDiagnosticResult struct {
10089	// Network security group result.
10090	NetworkSecurityGroupResult *NetworkSecurityGroupResult `json:"networkSecurityGroupResult,omitempty"`
10091
10092	// Network configuration diagnostic profile.
10093	Profile *NetworkConfigurationDiagnosticProfile `json:"profile,omitempty"`
10094}
10095
10096// NetworkIntentPolicy - Network Intent Policy resource.
10097type NetworkIntentPolicy struct {
10098	Resource
10099	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
10100	Etag *string `json:"etag,omitempty" azure:"ro"`
10101}
10102
10103// MarshalJSON implements the json.Marshaller interface for type NetworkIntentPolicy.
10104func (n NetworkIntentPolicy) MarshalJSON() ([]byte, error) {
10105	objectMap := n.Resource.marshalInternal()
10106	populate(objectMap, "etag", n.Etag)
10107	return json.Marshal(objectMap)
10108}
10109
10110// NetworkIntentPolicyConfiguration - Details of NetworkIntentPolicyConfiguration for PrepareNetworkPoliciesRequest.
10111type NetworkIntentPolicyConfiguration struct {
10112	// The name of the Network Intent Policy for storing in target subscription.
10113	NetworkIntentPolicyName *string `json:"networkIntentPolicyName,omitempty"`
10114
10115	// Source network intent policy.
10116	SourceNetworkIntentPolicy *NetworkIntentPolicy `json:"sourceNetworkIntentPolicy,omitempty"`
10117}
10118
10119// NetworkInterface - A network interface in a resource group.
10120type NetworkInterface struct {
10121	Resource
10122	// The extended location of the network interface.
10123	ExtendedLocation *ExtendedLocation `json:"extendedLocation,omitempty"`
10124
10125	// Properties of the network interface.
10126	Properties *NetworkInterfacePropertiesFormat `json:"properties,omitempty"`
10127
10128	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
10129	Etag *string `json:"etag,omitempty" azure:"ro"`
10130}
10131
10132// MarshalJSON implements the json.Marshaller interface for type NetworkInterface.
10133func (n NetworkInterface) MarshalJSON() ([]byte, error) {
10134	objectMap := n.Resource.marshalInternal()
10135	populate(objectMap, "etag", n.Etag)
10136	populate(objectMap, "extendedLocation", n.ExtendedLocation)
10137	populate(objectMap, "properties", n.Properties)
10138	return json.Marshal(objectMap)
10139}
10140
10141// NetworkInterfaceAssociation - Network interface and its custom security rules.
10142type NetworkInterfaceAssociation struct {
10143	// Collection of custom security rules.
10144	SecurityRules []*SecurityRule `json:"securityRules,omitempty"`
10145
10146	// READ-ONLY; Network interface ID.
10147	ID *string `json:"id,omitempty" azure:"ro"`
10148}
10149
10150// MarshalJSON implements the json.Marshaller interface for type NetworkInterfaceAssociation.
10151func (n NetworkInterfaceAssociation) MarshalJSON() ([]byte, error) {
10152	objectMap := make(map[string]interface{})
10153	populate(objectMap, "id", n.ID)
10154	populate(objectMap, "securityRules", n.SecurityRules)
10155	return json.Marshal(objectMap)
10156}
10157
10158// NetworkInterfaceDNSSettings - DNS settings of a network interface.
10159type NetworkInterfaceDNSSettings struct {
10160	// List of DNS servers IP addresses. Use 'AzureProvidedDNS' to switch to azure provided DNS resolution. 'AzureProvidedDNS' value cannot be combined with
10161	// other IPs, it must be the only value in dnsServers
10162	// collection.
10163	DNSServers []*string `json:"dnsServers,omitempty"`
10164
10165	// Relative DNS name for this NIC used for internal communications between VMs in the same virtual network.
10166	InternalDNSNameLabel *string `json:"internalDnsNameLabel,omitempty"`
10167
10168	// READ-ONLY; 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
10169	// part of the Availability Set. This property is what is
10170	// configured on each of those VMs.
10171	AppliedDNSServers []*string `json:"appliedDnsServers,omitempty" azure:"ro"`
10172
10173	// READ-ONLY; 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
10174	// the VM name with the value of
10175	// internalDomainNameSuffix.
10176	InternalDomainNameSuffix *string `json:"internalDomainNameSuffix,omitempty" azure:"ro"`
10177
10178	// READ-ONLY; Fully qualified DNS name supporting internal communications between VMs in the same virtual network.
10179	InternalFqdn *string `json:"internalFqdn,omitempty" azure:"ro"`
10180}
10181
10182// MarshalJSON implements the json.Marshaller interface for type NetworkInterfaceDNSSettings.
10183func (n NetworkInterfaceDNSSettings) MarshalJSON() ([]byte, error) {
10184	objectMap := make(map[string]interface{})
10185	populate(objectMap, "appliedDnsServers", n.AppliedDNSServers)
10186	populate(objectMap, "dnsServers", n.DNSServers)
10187	populate(objectMap, "internalDnsNameLabel", n.InternalDNSNameLabel)
10188	populate(objectMap, "internalDomainNameSuffix", n.InternalDomainNameSuffix)
10189	populate(objectMap, "internalFqdn", n.InternalFqdn)
10190	return json.Marshal(objectMap)
10191}
10192
10193// NetworkInterfaceIPConfiguration - IPConfiguration in a network interface.
10194type NetworkInterfaceIPConfiguration struct {
10195	SubResource
10196	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
10197	Name *string `json:"name,omitempty"`
10198
10199	// Network interface IP configuration properties.
10200	Properties *NetworkInterfaceIPConfigurationPropertiesFormat `json:"properties,omitempty"`
10201
10202	// Resource type.
10203	Type *string `json:"type,omitempty"`
10204
10205	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
10206	Etag *string `json:"etag,omitempty" azure:"ro"`
10207}
10208
10209// MarshalJSON implements the json.Marshaller interface for type NetworkInterfaceIPConfiguration.
10210func (n NetworkInterfaceIPConfiguration) MarshalJSON() ([]byte, error) {
10211	objectMap := n.SubResource.marshalInternal()
10212	populate(objectMap, "etag", n.Etag)
10213	populate(objectMap, "name", n.Name)
10214	populate(objectMap, "properties", n.Properties)
10215	populate(objectMap, "type", n.Type)
10216	return json.Marshal(objectMap)
10217}
10218
10219// NetworkInterfaceIPConfigurationListResult - Response for list ip configurations API service call.
10220type NetworkInterfaceIPConfigurationListResult struct {
10221	// A list of ip configurations.
10222	Value []*NetworkInterfaceIPConfiguration `json:"value,omitempty"`
10223
10224	// READ-ONLY; The URL to get the next set of results.
10225	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
10226}
10227
10228// MarshalJSON implements the json.Marshaller interface for type NetworkInterfaceIPConfigurationListResult.
10229func (n NetworkInterfaceIPConfigurationListResult) MarshalJSON() ([]byte, error) {
10230	objectMap := make(map[string]interface{})
10231	populate(objectMap, "nextLink", n.NextLink)
10232	populate(objectMap, "value", n.Value)
10233	return json.Marshal(objectMap)
10234}
10235
10236// NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties - PrivateLinkConnection properties for the network interface.
10237type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties struct {
10238	// READ-ONLY; List of FQDNs for current private link connection.
10239	Fqdns []*string `json:"fqdns,omitempty" azure:"ro"`
10240
10241	// READ-ONLY; The group ID for current private link connection.
10242	GroupID *string `json:"groupId,omitempty" azure:"ro"`
10243
10244	// READ-ONLY; The required member name for current private link connection.
10245	RequiredMemberName *string `json:"requiredMemberName,omitempty" azure:"ro"`
10246}
10247
10248// MarshalJSON implements the json.Marshaller interface for type NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties.
10249func (n NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties) MarshalJSON() ([]byte, error) {
10250	objectMap := make(map[string]interface{})
10251	populate(objectMap, "fqdns", n.Fqdns)
10252	populate(objectMap, "groupId", n.GroupID)
10253	populate(objectMap, "requiredMemberName", n.RequiredMemberName)
10254	return json.Marshal(objectMap)
10255}
10256
10257// NetworkInterfaceIPConfigurationPropertiesFormat - Properties of IP configuration.
10258type NetworkInterfaceIPConfigurationPropertiesFormat struct {
10259	// The reference to ApplicationGatewayBackendAddressPool resource.
10260	ApplicationGatewayBackendAddressPools []*ApplicationGatewayBackendAddressPool `json:"applicationGatewayBackendAddressPools,omitempty"`
10261
10262	// Application security groups in which the IP configuration is included.
10263	ApplicationSecurityGroups []*ApplicationSecurityGroup `json:"applicationSecurityGroups,omitempty"`
10264
10265	// The reference to gateway load balancer frontend IP.
10266	GatewayLoadBalancer *SubResource `json:"gatewayLoadBalancer,omitempty"`
10267
10268	// The reference to LoadBalancerBackendAddressPool resource.
10269	LoadBalancerBackendAddressPools []*BackendAddressPool `json:"loadBalancerBackendAddressPools,omitempty"`
10270
10271	// A list of references of LoadBalancerInboundNatRules.
10272	LoadBalancerInboundNatRules []*InboundNatRule `json:"loadBalancerInboundNatRules,omitempty"`
10273
10274	// Whether this is a primary customer address on the network interface.
10275	Primary *bool `json:"primary,omitempty"`
10276
10277	// Private IP address of the IP configuration.
10278	PrivateIPAddress *string `json:"privateIPAddress,omitempty"`
10279
10280	// Whether the specific IP configuration is IPv4 or IPv6. Default is IPv4.
10281	PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"`
10282
10283	// The private IP address allocation method.
10284	PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"`
10285
10286	// Public IP address bound to the IP configuration.
10287	PublicIPAddress *PublicIPAddress `json:"publicIPAddress,omitempty"`
10288
10289	// Subnet bound to the IP configuration.
10290	Subnet *Subnet `json:"subnet,omitempty"`
10291
10292	// The reference to Virtual Network Taps.
10293	VirtualNetworkTaps []*VirtualNetworkTap `json:"virtualNetworkTaps,omitempty"`
10294
10295	// READ-ONLY; PrivateLinkConnection properties for the network interface.
10296	PrivateLinkConnectionProperties *NetworkInterfaceIPConfigurationPrivateLinkConnectionProperties `json:"privateLinkConnectionProperties,omitempty" azure:"ro"`
10297
10298	// READ-ONLY; The provisioning state of the network interface IP configuration.
10299	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
10300}
10301
10302// MarshalJSON implements the json.Marshaller interface for type NetworkInterfaceIPConfigurationPropertiesFormat.
10303func (n NetworkInterfaceIPConfigurationPropertiesFormat) MarshalJSON() ([]byte, error) {
10304	objectMap := make(map[string]interface{})
10305	populate(objectMap, "applicationGatewayBackendAddressPools", n.ApplicationGatewayBackendAddressPools)
10306	populate(objectMap, "applicationSecurityGroups", n.ApplicationSecurityGroups)
10307	populate(objectMap, "gatewayLoadBalancer", n.GatewayLoadBalancer)
10308	populate(objectMap, "loadBalancerBackendAddressPools", n.LoadBalancerBackendAddressPools)
10309	populate(objectMap, "loadBalancerInboundNatRules", n.LoadBalancerInboundNatRules)
10310	populate(objectMap, "primary", n.Primary)
10311	populate(objectMap, "privateIPAddress", n.PrivateIPAddress)
10312	populate(objectMap, "privateIPAddressVersion", n.PrivateIPAddressVersion)
10313	populate(objectMap, "privateIPAllocationMethod", n.PrivateIPAllocationMethod)
10314	populate(objectMap, "privateLinkConnectionProperties", n.PrivateLinkConnectionProperties)
10315	populate(objectMap, "provisioningState", n.ProvisioningState)
10316	populate(objectMap, "publicIPAddress", n.PublicIPAddress)
10317	populate(objectMap, "subnet", n.Subnet)
10318	populate(objectMap, "virtualNetworkTaps", n.VirtualNetworkTaps)
10319	return json.Marshal(objectMap)
10320}
10321
10322// NetworkInterfaceIPConfigurationsGetOptions contains the optional parameters for the NetworkInterfaceIPConfigurations.Get method.
10323type NetworkInterfaceIPConfigurationsGetOptions struct {
10324	// placeholder for future optional parameters
10325}
10326
10327// NetworkInterfaceIPConfigurationsListOptions contains the optional parameters for the NetworkInterfaceIPConfigurations.List method.
10328type NetworkInterfaceIPConfigurationsListOptions struct {
10329	// placeholder for future optional parameters
10330}
10331
10332// NetworkInterfaceListResult - Response for the ListNetworkInterface API service call.
10333type NetworkInterfaceListResult struct {
10334	// A list of network interfaces in a resource group.
10335	Value []*NetworkInterface `json:"value,omitempty"`
10336
10337	// READ-ONLY; The URL to get the next set of results.
10338	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
10339}
10340
10341// MarshalJSON implements the json.Marshaller interface for type NetworkInterfaceListResult.
10342func (n NetworkInterfaceListResult) MarshalJSON() ([]byte, error) {
10343	objectMap := make(map[string]interface{})
10344	populate(objectMap, "nextLink", n.NextLink)
10345	populate(objectMap, "value", n.Value)
10346	return json.Marshal(objectMap)
10347}
10348
10349// NetworkInterfaceLoadBalancerListResult - Response for list ip configurations API service call.
10350type NetworkInterfaceLoadBalancerListResult struct {
10351	// A list of load balancers.
10352	Value []*LoadBalancer `json:"value,omitempty"`
10353
10354	// READ-ONLY; The URL to get the next set of results.
10355	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
10356}
10357
10358// MarshalJSON implements the json.Marshaller interface for type NetworkInterfaceLoadBalancerListResult.
10359func (n NetworkInterfaceLoadBalancerListResult) MarshalJSON() ([]byte, error) {
10360	objectMap := make(map[string]interface{})
10361	populate(objectMap, "nextLink", n.NextLink)
10362	populate(objectMap, "value", n.Value)
10363	return json.Marshal(objectMap)
10364}
10365
10366// NetworkInterfaceLoadBalancersListOptions contains the optional parameters for the NetworkInterfaceLoadBalancers.List method.
10367type NetworkInterfaceLoadBalancersListOptions struct {
10368	// placeholder for future optional parameters
10369}
10370
10371// NetworkInterfacePropertiesFormat - NetworkInterface properties.
10372type NetworkInterfacePropertiesFormat struct {
10373	// The DNS settings in network interface.
10374	DNSSettings *NetworkInterfaceDNSSettings `json:"dnsSettings,omitempty"`
10375
10376	// If the network interface is accelerated networking enabled.
10377	EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"`
10378
10379	// Indicates whether IP forwarding is enabled on this network interface.
10380	EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"`
10381
10382	// A list of IPConfigurations of the network interface.
10383	IPConfigurations []*NetworkInterfaceIPConfiguration `json:"ipConfigurations,omitempty"`
10384
10385	// Migration phase of Network Interface resource.
10386	MigrationPhase *NetworkInterfaceMigrationPhase `json:"migrationPhase,omitempty"`
10387
10388	// The reference to the NetworkSecurityGroup resource.
10389	NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"`
10390
10391	// Type of Network Interface resource.
10392	NicType *NetworkInterfaceNicType `json:"nicType,omitempty"`
10393
10394	// Privatelinkservice of the network interface resource.
10395	PrivateLinkService *PrivateLinkService `json:"privateLinkService,omitempty"`
10396
10397	// WorkloadType of the NetworkInterface for BareMetal resources
10398	WorkloadType *string `json:"workloadType,omitempty"`
10399
10400	// READ-ONLY; A reference to the dscp configuration to which the network interface is linked.
10401	DscpConfiguration *SubResource `json:"dscpConfiguration,omitempty" azure:"ro"`
10402
10403	// READ-ONLY; A list of references to linked BareMetal resources.
10404	HostedWorkloads []*string `json:"hostedWorkloads,omitempty" azure:"ro"`
10405
10406	// READ-ONLY; The MAC address of the network interface.
10407	MacAddress *string `json:"macAddress,omitempty" azure:"ro"`
10408
10409	// READ-ONLY; Whether this is a primary network interface on a virtual machine.
10410	Primary *bool `json:"primary,omitempty" azure:"ro"`
10411
10412	// READ-ONLY; A reference to the private endpoint to which the network interface is linked.
10413	PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty" azure:"ro"`
10414
10415	// READ-ONLY; The provisioning state of the network interface resource.
10416	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
10417
10418	// READ-ONLY; The resource GUID property of the network interface resource.
10419	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
10420
10421	// READ-ONLY; A list of TapConfigurations of the network interface.
10422	TapConfigurations []*NetworkInterfaceTapConfiguration `json:"tapConfigurations,omitempty" azure:"ro"`
10423
10424	// READ-ONLY; The reference to a virtual machine.
10425	VirtualMachine *SubResource `json:"virtualMachine,omitempty" azure:"ro"`
10426}
10427
10428// MarshalJSON implements the json.Marshaller interface for type NetworkInterfacePropertiesFormat.
10429func (n NetworkInterfacePropertiesFormat) MarshalJSON() ([]byte, error) {
10430	objectMap := make(map[string]interface{})
10431	populate(objectMap, "dnsSettings", n.DNSSettings)
10432	populate(objectMap, "dscpConfiguration", n.DscpConfiguration)
10433	populate(objectMap, "enableAcceleratedNetworking", n.EnableAcceleratedNetworking)
10434	populate(objectMap, "enableIPForwarding", n.EnableIPForwarding)
10435	populate(objectMap, "hostedWorkloads", n.HostedWorkloads)
10436	populate(objectMap, "ipConfigurations", n.IPConfigurations)
10437	populate(objectMap, "macAddress", n.MacAddress)
10438	populate(objectMap, "migrationPhase", n.MigrationPhase)
10439	populate(objectMap, "networkSecurityGroup", n.NetworkSecurityGroup)
10440	populate(objectMap, "nicType", n.NicType)
10441	populate(objectMap, "primary", n.Primary)
10442	populate(objectMap, "privateEndpoint", n.PrivateEndpoint)
10443	populate(objectMap, "privateLinkService", n.PrivateLinkService)
10444	populate(objectMap, "provisioningState", n.ProvisioningState)
10445	populate(objectMap, "resourceGuid", n.ResourceGUID)
10446	populate(objectMap, "tapConfigurations", n.TapConfigurations)
10447	populate(objectMap, "virtualMachine", n.VirtualMachine)
10448	populate(objectMap, "workloadType", n.WorkloadType)
10449	return json.Marshal(objectMap)
10450}
10451
10452// NetworkInterfaceTapConfiguration - Tap configuration in a Network Interface.
10453type NetworkInterfaceTapConfiguration struct {
10454	SubResource
10455	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
10456	Name *string `json:"name,omitempty"`
10457
10458	// Properties of the Virtual Network Tap configuration.
10459	Properties *NetworkInterfaceTapConfigurationPropertiesFormat `json:"properties,omitempty"`
10460
10461	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
10462	Etag *string `json:"etag,omitempty" azure:"ro"`
10463
10464	// READ-ONLY; Sub Resource type.
10465	Type *string `json:"type,omitempty" azure:"ro"`
10466}
10467
10468// MarshalJSON implements the json.Marshaller interface for type NetworkInterfaceTapConfiguration.
10469func (n NetworkInterfaceTapConfiguration) MarshalJSON() ([]byte, error) {
10470	objectMap := n.SubResource.marshalInternal()
10471	populate(objectMap, "etag", n.Etag)
10472	populate(objectMap, "name", n.Name)
10473	populate(objectMap, "properties", n.Properties)
10474	populate(objectMap, "type", n.Type)
10475	return json.Marshal(objectMap)
10476}
10477
10478// NetworkInterfaceTapConfigurationListResult - Response for list tap configurations API service call.
10479type NetworkInterfaceTapConfigurationListResult struct {
10480	// A list of tap configurations.
10481	Value []*NetworkInterfaceTapConfiguration `json:"value,omitempty"`
10482
10483	// READ-ONLY; The URL to get the next set of results.
10484	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
10485}
10486
10487// MarshalJSON implements the json.Marshaller interface for type NetworkInterfaceTapConfigurationListResult.
10488func (n NetworkInterfaceTapConfigurationListResult) MarshalJSON() ([]byte, error) {
10489	objectMap := make(map[string]interface{})
10490	populate(objectMap, "nextLink", n.NextLink)
10491	populate(objectMap, "value", n.Value)
10492	return json.Marshal(objectMap)
10493}
10494
10495// NetworkInterfaceTapConfigurationPropertiesFormat - Properties of Virtual Network Tap configuration.
10496type NetworkInterfaceTapConfigurationPropertiesFormat struct {
10497	// The reference to the Virtual Network Tap resource.
10498	VirtualNetworkTap *VirtualNetworkTap `json:"virtualNetworkTap,omitempty"`
10499
10500	// READ-ONLY; The provisioning state of the network interface tap configuration resource.
10501	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
10502}
10503
10504// NetworkInterfaceTapConfigurationsBeginCreateOrUpdateOptions contains the optional parameters for the NetworkInterfaceTapConfigurations.BeginCreateOrUpdate
10505// method.
10506type NetworkInterfaceTapConfigurationsBeginCreateOrUpdateOptions struct {
10507	// placeholder for future optional parameters
10508}
10509
10510// NetworkInterfaceTapConfigurationsBeginDeleteOptions contains the optional parameters for the NetworkInterfaceTapConfigurations.BeginDelete method.
10511type NetworkInterfaceTapConfigurationsBeginDeleteOptions struct {
10512	// placeholder for future optional parameters
10513}
10514
10515// NetworkInterfaceTapConfigurationsGetOptions contains the optional parameters for the NetworkInterfaceTapConfigurations.Get method.
10516type NetworkInterfaceTapConfigurationsGetOptions struct {
10517	// placeholder for future optional parameters
10518}
10519
10520// NetworkInterfaceTapConfigurationsListOptions contains the optional parameters for the NetworkInterfaceTapConfigurations.List method.
10521type NetworkInterfaceTapConfigurationsListOptions struct {
10522	// placeholder for future optional parameters
10523}
10524
10525// NetworkInterfacesBeginCreateOrUpdateOptions contains the optional parameters for the NetworkInterfaces.BeginCreateOrUpdate method.
10526type NetworkInterfacesBeginCreateOrUpdateOptions struct {
10527	// placeholder for future optional parameters
10528}
10529
10530// NetworkInterfacesBeginDeleteOptions contains the optional parameters for the NetworkInterfaces.BeginDelete method.
10531type NetworkInterfacesBeginDeleteOptions struct {
10532	// placeholder for future optional parameters
10533}
10534
10535// NetworkInterfacesBeginGetEffectiveRouteTableOptions contains the optional parameters for the NetworkInterfaces.BeginGetEffectiveRouteTable method.
10536type NetworkInterfacesBeginGetEffectiveRouteTableOptions struct {
10537	// placeholder for future optional parameters
10538}
10539
10540// NetworkInterfacesBeginListEffectiveNetworkSecurityGroupsOptions contains the optional parameters for the NetworkInterfaces.BeginListEffectiveNetworkSecurityGroups
10541// method.
10542type NetworkInterfacesBeginListEffectiveNetworkSecurityGroupsOptions struct {
10543	// placeholder for future optional parameters
10544}
10545
10546// NetworkInterfacesGetCloudServiceNetworkInterfaceOptions contains the optional parameters for the NetworkInterfaces.GetCloudServiceNetworkInterface method.
10547type NetworkInterfacesGetCloudServiceNetworkInterfaceOptions struct {
10548	// Expands referenced resources.
10549	Expand *string
10550}
10551
10552// NetworkInterfacesGetOptions contains the optional parameters for the NetworkInterfaces.Get method.
10553type NetworkInterfacesGetOptions struct {
10554	// Expands referenced resources.
10555	Expand *string
10556}
10557
10558// NetworkInterfacesGetVirtualMachineScaleSetIPConfigurationOptions contains the optional parameters for the NetworkInterfaces.GetVirtualMachineScaleSetIPConfiguration
10559// method.
10560type NetworkInterfacesGetVirtualMachineScaleSetIPConfigurationOptions struct {
10561	// Expands referenced resources.
10562	Expand *string
10563}
10564
10565// NetworkInterfacesGetVirtualMachineScaleSetNetworkInterfaceOptions contains the optional parameters for the NetworkInterfaces.GetVirtualMachineScaleSetNetworkInterface
10566// method.
10567type NetworkInterfacesGetVirtualMachineScaleSetNetworkInterfaceOptions struct {
10568	// Expands referenced resources.
10569	Expand *string
10570}
10571
10572// NetworkInterfacesListAllOptions contains the optional parameters for the NetworkInterfaces.ListAll method.
10573type NetworkInterfacesListAllOptions struct {
10574	// placeholder for future optional parameters
10575}
10576
10577// NetworkInterfacesListCloudServiceNetworkInterfacesOptions contains the optional parameters for the NetworkInterfaces.ListCloudServiceNetworkInterfaces
10578// method.
10579type NetworkInterfacesListCloudServiceNetworkInterfacesOptions struct {
10580	// placeholder for future optional parameters
10581}
10582
10583// NetworkInterfacesListCloudServiceRoleInstanceNetworkInterfacesOptions contains the optional parameters for the NetworkInterfaces.ListCloudServiceRoleInstanceNetworkInterfaces
10584// method.
10585type NetworkInterfacesListCloudServiceRoleInstanceNetworkInterfacesOptions struct {
10586	// placeholder for future optional parameters
10587}
10588
10589// NetworkInterfacesListOptions contains the optional parameters for the NetworkInterfaces.List method.
10590type NetworkInterfacesListOptions struct {
10591	// placeholder for future optional parameters
10592}
10593
10594// NetworkInterfacesListVirtualMachineScaleSetIPConfigurationsOptions contains the optional parameters for the NetworkInterfaces.ListVirtualMachineScaleSetIPConfigurations
10595// method.
10596type NetworkInterfacesListVirtualMachineScaleSetIPConfigurationsOptions struct {
10597	// Expands referenced resources.
10598	Expand *string
10599}
10600
10601// NetworkInterfacesListVirtualMachineScaleSetNetworkInterfacesOptions contains the optional parameters for the NetworkInterfaces.ListVirtualMachineScaleSetNetworkInterfaces
10602// method.
10603type NetworkInterfacesListVirtualMachineScaleSetNetworkInterfacesOptions struct {
10604	// placeholder for future optional parameters
10605}
10606
10607// NetworkInterfacesListVirtualMachineScaleSetVMNetworkInterfacesOptions contains the optional parameters for the NetworkInterfaces.ListVirtualMachineScaleSetVMNetworkInterfaces
10608// method.
10609type NetworkInterfacesListVirtualMachineScaleSetVMNetworkInterfacesOptions struct {
10610	// placeholder for future optional parameters
10611}
10612
10613// NetworkInterfacesUpdateTagsOptions contains the optional parameters for the NetworkInterfaces.UpdateTags method.
10614type NetworkInterfacesUpdateTagsOptions struct {
10615	// placeholder for future optional parameters
10616}
10617
10618// NetworkManagementClientBeginDeleteBastionShareableLinkOptions contains the optional parameters for the NetworkManagementClient.BeginDeleteBastionShareableLink
10619// method.
10620type NetworkManagementClientBeginDeleteBastionShareableLinkOptions struct {
10621	// placeholder for future optional parameters
10622}
10623
10624// NetworkManagementClientBeginGeneratevirtualwanvpnserverconfigurationvpnprofileOptions contains the optional parameters for the NetworkManagementClient.BeginGeneratevirtualwanvpnserverconfigurationvpnprofile
10625// method.
10626type NetworkManagementClientBeginGeneratevirtualwanvpnserverconfigurationvpnprofileOptions struct {
10627	// placeholder for future optional parameters
10628}
10629
10630// NetworkManagementClientBeginGetActiveSessionsOptions contains the optional parameters for the NetworkManagementClient.BeginGetActiveSessions method.
10631type NetworkManagementClientBeginGetActiveSessionsOptions struct {
10632	// placeholder for future optional parameters
10633}
10634
10635// NetworkManagementClientBeginPutBastionShareableLinkOptions contains the optional parameters for the NetworkManagementClient.BeginPutBastionShareableLink
10636// method.
10637type NetworkManagementClientBeginPutBastionShareableLinkOptions struct {
10638	// placeholder for future optional parameters
10639}
10640
10641// NetworkManagementClientCheckDNSNameAvailabilityOptions contains the optional parameters for the NetworkManagementClient.CheckDNSNameAvailability method.
10642type NetworkManagementClientCheckDNSNameAvailabilityOptions struct {
10643	// placeholder for future optional parameters
10644}
10645
10646// NetworkManagementClientDisconnectActiveSessionsOptions contains the optional parameters for the NetworkManagementClient.DisconnectActiveSessions method.
10647type NetworkManagementClientDisconnectActiveSessionsOptions struct {
10648	// placeholder for future optional parameters
10649}
10650
10651// NetworkManagementClientGetBastionShareableLinkOptions contains the optional parameters for the NetworkManagementClient.GetBastionShareableLink method.
10652type NetworkManagementClientGetBastionShareableLinkOptions struct {
10653	// placeholder for future optional parameters
10654}
10655
10656// NetworkManagementClientSupportedSecurityProvidersOptions contains the optional parameters for the NetworkManagementClient.SupportedSecurityProviders
10657// method.
10658type NetworkManagementClientSupportedSecurityProvidersOptions struct {
10659	// placeholder for future optional parameters
10660}
10661
10662// NetworkProfile - Network profile resource.
10663type NetworkProfile struct {
10664	Resource
10665	// Network profile properties.
10666	Properties *NetworkProfilePropertiesFormat `json:"properties,omitempty"`
10667
10668	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
10669	Etag *string `json:"etag,omitempty" azure:"ro"`
10670}
10671
10672// MarshalJSON implements the json.Marshaller interface for type NetworkProfile.
10673func (n NetworkProfile) MarshalJSON() ([]byte, error) {
10674	objectMap := n.Resource.marshalInternal()
10675	populate(objectMap, "etag", n.Etag)
10676	populate(objectMap, "properties", n.Properties)
10677	return json.Marshal(objectMap)
10678}
10679
10680// NetworkProfileListResult - Response for ListNetworkProfiles API service call.
10681type NetworkProfileListResult struct {
10682	// The URL to get the next set of results.
10683	NextLink *string `json:"nextLink,omitempty"`
10684
10685	// A list of network profiles that exist in a resource group.
10686	Value []*NetworkProfile `json:"value,omitempty"`
10687}
10688
10689// MarshalJSON implements the json.Marshaller interface for type NetworkProfileListResult.
10690func (n NetworkProfileListResult) MarshalJSON() ([]byte, error) {
10691	objectMap := make(map[string]interface{})
10692	populate(objectMap, "nextLink", n.NextLink)
10693	populate(objectMap, "value", n.Value)
10694	return json.Marshal(objectMap)
10695}
10696
10697// NetworkProfilePropertiesFormat - Network profile properties.
10698type NetworkProfilePropertiesFormat struct {
10699	// List of chid container network interface configurations.
10700	ContainerNetworkInterfaceConfigurations []*ContainerNetworkInterfaceConfiguration `json:"containerNetworkInterfaceConfigurations,omitempty"`
10701
10702	// READ-ONLY; List of child container network interfaces.
10703	ContainerNetworkInterfaces []*ContainerNetworkInterface `json:"containerNetworkInterfaces,omitempty" azure:"ro"`
10704
10705	// READ-ONLY; The provisioning state of the network profile resource.
10706	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
10707
10708	// READ-ONLY; The resource GUID property of the network profile resource.
10709	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
10710}
10711
10712// MarshalJSON implements the json.Marshaller interface for type NetworkProfilePropertiesFormat.
10713func (n NetworkProfilePropertiesFormat) MarshalJSON() ([]byte, error) {
10714	objectMap := make(map[string]interface{})
10715	populate(objectMap, "containerNetworkInterfaceConfigurations", n.ContainerNetworkInterfaceConfigurations)
10716	populate(objectMap, "containerNetworkInterfaces", n.ContainerNetworkInterfaces)
10717	populate(objectMap, "provisioningState", n.ProvisioningState)
10718	populate(objectMap, "resourceGuid", n.ResourceGUID)
10719	return json.Marshal(objectMap)
10720}
10721
10722// NetworkProfilesBeginDeleteOptions contains the optional parameters for the NetworkProfiles.BeginDelete method.
10723type NetworkProfilesBeginDeleteOptions struct {
10724	// placeholder for future optional parameters
10725}
10726
10727// NetworkProfilesCreateOrUpdateOptions contains the optional parameters for the NetworkProfiles.CreateOrUpdate method.
10728type NetworkProfilesCreateOrUpdateOptions struct {
10729	// placeholder for future optional parameters
10730}
10731
10732// NetworkProfilesGetOptions contains the optional parameters for the NetworkProfiles.Get method.
10733type NetworkProfilesGetOptions struct {
10734	// Expands referenced resources.
10735	Expand *string
10736}
10737
10738// NetworkProfilesListAllOptions contains the optional parameters for the NetworkProfiles.ListAll method.
10739type NetworkProfilesListAllOptions struct {
10740	// placeholder for future optional parameters
10741}
10742
10743// NetworkProfilesListOptions contains the optional parameters for the NetworkProfiles.List method.
10744type NetworkProfilesListOptions struct {
10745	// placeholder for future optional parameters
10746}
10747
10748// NetworkProfilesUpdateTagsOptions contains the optional parameters for the NetworkProfiles.UpdateTags method.
10749type NetworkProfilesUpdateTagsOptions struct {
10750	// placeholder for future optional parameters
10751}
10752
10753// NetworkRule - Rule of type network.
10754type NetworkRule struct {
10755	FirewallPolicyRule
10756	// List of destination IP addresses or Service Tags.
10757	DestinationAddresses []*string `json:"destinationAddresses,omitempty"`
10758
10759	// List of destination FQDNs.
10760	DestinationFqdns []*string `json:"destinationFqdns,omitempty"`
10761
10762	// List of destination IpGroups for this rule.
10763	DestinationIPGroups []*string `json:"destinationIpGroups,omitempty"`
10764
10765	// List of destination ports.
10766	DestinationPorts []*string `json:"destinationPorts,omitempty"`
10767
10768	// Array of FirewallPolicyRuleNetworkProtocols.
10769	IPProtocols []*FirewallPolicyRuleNetworkProtocol `json:"ipProtocols,omitempty"`
10770
10771	// List of source IP addresses for this rule.
10772	SourceAddresses []*string `json:"sourceAddresses,omitempty"`
10773
10774	// List of source IpGroups for this rule.
10775	SourceIPGroups []*string `json:"sourceIpGroups,omitempty"`
10776}
10777
10778// MarshalJSON implements the json.Marshaller interface for type NetworkRule.
10779func (n NetworkRule) MarshalJSON() ([]byte, error) {
10780	objectMap := n.FirewallPolicyRule.marshalInternal(FirewallPolicyRuleTypeNetworkRule)
10781	populate(objectMap, "destinationAddresses", n.DestinationAddresses)
10782	populate(objectMap, "destinationFqdns", n.DestinationFqdns)
10783	populate(objectMap, "destinationIpGroups", n.DestinationIPGroups)
10784	populate(objectMap, "destinationPorts", n.DestinationPorts)
10785	populate(objectMap, "ipProtocols", n.IPProtocols)
10786	populate(objectMap, "sourceAddresses", n.SourceAddresses)
10787	populate(objectMap, "sourceIpGroups", n.SourceIPGroups)
10788	return json.Marshal(objectMap)
10789}
10790
10791// UnmarshalJSON implements the json.Unmarshaller interface for type NetworkRule.
10792func (n *NetworkRule) UnmarshalJSON(data []byte) error {
10793	var rawMsg map[string]json.RawMessage
10794	if err := json.Unmarshal(data, &rawMsg); err != nil {
10795		return err
10796	}
10797	for key, val := range rawMsg {
10798		var err error
10799		switch key {
10800		case "destinationAddresses":
10801			err = unpopulate(val, &n.DestinationAddresses)
10802			delete(rawMsg, key)
10803		case "destinationFqdns":
10804			err = unpopulate(val, &n.DestinationFqdns)
10805			delete(rawMsg, key)
10806		case "destinationIpGroups":
10807			err = unpopulate(val, &n.DestinationIPGroups)
10808			delete(rawMsg, key)
10809		case "destinationPorts":
10810			err = unpopulate(val, &n.DestinationPorts)
10811			delete(rawMsg, key)
10812		case "ipProtocols":
10813			err = unpopulate(val, &n.IPProtocols)
10814			delete(rawMsg, key)
10815		case "sourceAddresses":
10816			err = unpopulate(val, &n.SourceAddresses)
10817			delete(rawMsg, key)
10818		case "sourceIpGroups":
10819			err = unpopulate(val, &n.SourceIPGroups)
10820			delete(rawMsg, key)
10821		}
10822		if err != nil {
10823			return err
10824		}
10825	}
10826	return n.FirewallPolicyRule.unmarshalInternal(rawMsg)
10827}
10828
10829// NetworkSecurityGroup resource.
10830type NetworkSecurityGroup struct {
10831	Resource
10832	// Properties of the network security group.
10833	Properties *NetworkSecurityGroupPropertiesFormat `json:"properties,omitempty"`
10834
10835	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
10836	Etag *string `json:"etag,omitempty" azure:"ro"`
10837}
10838
10839// MarshalJSON implements the json.Marshaller interface for type NetworkSecurityGroup.
10840func (n NetworkSecurityGroup) MarshalJSON() ([]byte, error) {
10841	objectMap := n.Resource.marshalInternal()
10842	populate(objectMap, "etag", n.Etag)
10843	populate(objectMap, "properties", n.Properties)
10844	return json.Marshal(objectMap)
10845}
10846
10847// NetworkSecurityGroupListResult - Response for ListNetworkSecurityGroups API service call.
10848type NetworkSecurityGroupListResult struct {
10849	// The URL to get the next set of results.
10850	NextLink *string `json:"nextLink,omitempty"`
10851
10852	// A list of NetworkSecurityGroup resources.
10853	Value []*NetworkSecurityGroup `json:"value,omitempty"`
10854}
10855
10856// MarshalJSON implements the json.Marshaller interface for type NetworkSecurityGroupListResult.
10857func (n NetworkSecurityGroupListResult) MarshalJSON() ([]byte, error) {
10858	objectMap := make(map[string]interface{})
10859	populate(objectMap, "nextLink", n.NextLink)
10860	populate(objectMap, "value", n.Value)
10861	return json.Marshal(objectMap)
10862}
10863
10864// NetworkSecurityGroupPropertiesFormat - Network Security Group resource.
10865type NetworkSecurityGroupPropertiesFormat struct {
10866	// A collection of security rules of the network security group.
10867	SecurityRules []*SecurityRule `json:"securityRules,omitempty"`
10868
10869	// READ-ONLY; The default security rules of network security group.
10870	DefaultSecurityRules []*SecurityRule `json:"defaultSecurityRules,omitempty" azure:"ro"`
10871
10872	// READ-ONLY; A collection of references to flow log resources.
10873	FlowLogs []*FlowLog `json:"flowLogs,omitempty" azure:"ro"`
10874
10875	// READ-ONLY; A collection of references to network interfaces.
10876	NetworkInterfaces []*NetworkInterface `json:"networkInterfaces,omitempty" azure:"ro"`
10877
10878	// READ-ONLY; The provisioning state of the network security group resource.
10879	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
10880
10881	// READ-ONLY; The resource GUID property of the network security group resource.
10882	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
10883
10884	// READ-ONLY; A collection of references to subnets.
10885	Subnets []*Subnet `json:"subnets,omitempty" azure:"ro"`
10886}
10887
10888// MarshalJSON implements the json.Marshaller interface for type NetworkSecurityGroupPropertiesFormat.
10889func (n NetworkSecurityGroupPropertiesFormat) MarshalJSON() ([]byte, error) {
10890	objectMap := make(map[string]interface{})
10891	populate(objectMap, "defaultSecurityRules", n.DefaultSecurityRules)
10892	populate(objectMap, "flowLogs", n.FlowLogs)
10893	populate(objectMap, "networkInterfaces", n.NetworkInterfaces)
10894	populate(objectMap, "provisioningState", n.ProvisioningState)
10895	populate(objectMap, "resourceGuid", n.ResourceGUID)
10896	populate(objectMap, "securityRules", n.SecurityRules)
10897	populate(objectMap, "subnets", n.Subnets)
10898	return json.Marshal(objectMap)
10899}
10900
10901// NetworkSecurityGroupResult - Network configuration diagnostic result corresponded provided traffic query.
10902type NetworkSecurityGroupResult struct {
10903	// The network traffic is allowed or denied.
10904	SecurityRuleAccessResult *SecurityRuleAccess `json:"securityRuleAccessResult,omitempty"`
10905
10906	// READ-ONLY; List of results network security groups diagnostic.
10907	EvaluatedNetworkSecurityGroups []*EvaluatedNetworkSecurityGroup `json:"evaluatedNetworkSecurityGroups,omitempty" azure:"ro"`
10908}
10909
10910// MarshalJSON implements the json.Marshaller interface for type NetworkSecurityGroupResult.
10911func (n NetworkSecurityGroupResult) MarshalJSON() ([]byte, error) {
10912	objectMap := make(map[string]interface{})
10913	populate(objectMap, "evaluatedNetworkSecurityGroups", n.EvaluatedNetworkSecurityGroups)
10914	populate(objectMap, "securityRuleAccessResult", n.SecurityRuleAccessResult)
10915	return json.Marshal(objectMap)
10916}
10917
10918// NetworkSecurityGroupsBeginCreateOrUpdateOptions contains the optional parameters for the NetworkSecurityGroups.BeginCreateOrUpdate method.
10919type NetworkSecurityGroupsBeginCreateOrUpdateOptions struct {
10920	// placeholder for future optional parameters
10921}
10922
10923// NetworkSecurityGroupsBeginDeleteOptions contains the optional parameters for the NetworkSecurityGroups.BeginDelete method.
10924type NetworkSecurityGroupsBeginDeleteOptions struct {
10925	// placeholder for future optional parameters
10926}
10927
10928// NetworkSecurityGroupsGetOptions contains the optional parameters for the NetworkSecurityGroups.Get method.
10929type NetworkSecurityGroupsGetOptions struct {
10930	// Expands referenced resources.
10931	Expand *string
10932}
10933
10934// NetworkSecurityGroupsListAllOptions contains the optional parameters for the NetworkSecurityGroups.ListAll method.
10935type NetworkSecurityGroupsListAllOptions struct {
10936	// placeholder for future optional parameters
10937}
10938
10939// NetworkSecurityGroupsListOptions contains the optional parameters for the NetworkSecurityGroups.List method.
10940type NetworkSecurityGroupsListOptions struct {
10941	// placeholder for future optional parameters
10942}
10943
10944// NetworkSecurityGroupsUpdateTagsOptions contains the optional parameters for the NetworkSecurityGroups.UpdateTags method.
10945type NetworkSecurityGroupsUpdateTagsOptions struct {
10946	// placeholder for future optional parameters
10947}
10948
10949// NetworkSecurityRulesEvaluationResult - Network security rules evaluation result.
10950type NetworkSecurityRulesEvaluationResult struct {
10951	// Value indicating whether destination is matched.
10952	DestinationMatched *bool `json:"destinationMatched,omitempty"`
10953
10954	// Value indicating whether destination port is matched.
10955	DestinationPortMatched *bool `json:"destinationPortMatched,omitempty"`
10956
10957	// Name of the network security rule.
10958	Name *string `json:"name,omitempty"`
10959
10960	// Value indicating whether protocol is matched.
10961	ProtocolMatched *bool `json:"protocolMatched,omitempty"`
10962
10963	// Value indicating whether source is matched.
10964	SourceMatched *bool `json:"sourceMatched,omitempty"`
10965
10966	// Value indicating whether source port is matched.
10967	SourcePortMatched *bool `json:"sourcePortMatched,omitempty"`
10968}
10969
10970// NetworkVirtualAppliance Resource.
10971type NetworkVirtualAppliance struct {
10972	Resource
10973	// The service principal that has read access to cloud-init and config blob.
10974	Identity *ManagedServiceIdentity `json:"identity,omitempty"`
10975
10976	// Properties of the Network Virtual Appliance.
10977	Properties *NetworkVirtualAppliancePropertiesFormat `json:"properties,omitempty"`
10978
10979	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
10980	Etag *string `json:"etag,omitempty" azure:"ro"`
10981}
10982
10983// MarshalJSON implements the json.Marshaller interface for type NetworkVirtualAppliance.
10984func (n NetworkVirtualAppliance) MarshalJSON() ([]byte, error) {
10985	objectMap := n.Resource.marshalInternal()
10986	populate(objectMap, "etag", n.Etag)
10987	populate(objectMap, "identity", n.Identity)
10988	populate(objectMap, "properties", n.Properties)
10989	return json.Marshal(objectMap)
10990}
10991
10992// NetworkVirtualApplianceListResult - Response for ListNetworkVirtualAppliances API service call.
10993type NetworkVirtualApplianceListResult struct {
10994	// URL to get the next set of results.
10995	NextLink *string `json:"nextLink,omitempty"`
10996
10997	// List of Network Virtual Appliances.
10998	Value []*NetworkVirtualAppliance `json:"value,omitempty"`
10999}
11000
11001// MarshalJSON implements the json.Marshaller interface for type NetworkVirtualApplianceListResult.
11002func (n NetworkVirtualApplianceListResult) MarshalJSON() ([]byte, error) {
11003	objectMap := make(map[string]interface{})
11004	populate(objectMap, "nextLink", n.NextLink)
11005	populate(objectMap, "value", n.Value)
11006	return json.Marshal(objectMap)
11007}
11008
11009// NetworkVirtualAppliancePropertiesFormat - Network Virtual Appliance definition.
11010type NetworkVirtualAppliancePropertiesFormat struct {
11011	// BootStrapConfigurationBlobs storage URLs.
11012	BootStrapConfigurationBlobs []*string `json:"bootStrapConfigurationBlobs,omitempty"`
11013
11014	// CloudInitConfiguration string in plain text.
11015	CloudInitConfiguration *string `json:"cloudInitConfiguration,omitempty"`
11016
11017	// CloudInitConfigurationBlob storage URLs.
11018	CloudInitConfigurationBlobs []*string `json:"cloudInitConfigurationBlobs,omitempty"`
11019
11020	// Network Virtual Appliance SKU.
11021	NvaSKU *VirtualApplianceSKUProperties `json:"nvaSku,omitempty"`
11022
11023	// VirtualAppliance ASN.
11024	VirtualApplianceAsn *int64 `json:"virtualApplianceAsn,omitempty"`
11025
11026	// The Virtual Hub where Network Virtual Appliance is being deployed.
11027	VirtualHub *SubResource `json:"virtualHub,omitempty"`
11028
11029	// READ-ONLY; Address Prefix.
11030	AddressPrefix *string `json:"addressPrefix,omitempty" azure:"ro"`
11031
11032	// READ-ONLY; List of references to InboundSecurityRules.
11033	InboundSecurityRules []*SubResource `json:"inboundSecurityRules,omitempty" azure:"ro"`
11034
11035	// READ-ONLY; The provisioning state of the resource.
11036	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
11037
11038	// READ-ONLY; List of Virtual Appliance Network Interfaces.
11039	VirtualApplianceNics []*VirtualApplianceNicProperties `json:"virtualApplianceNics,omitempty" azure:"ro"`
11040
11041	// READ-ONLY; List of references to VirtualApplianceSite.
11042	VirtualApplianceSites []*SubResource `json:"virtualApplianceSites,omitempty" azure:"ro"`
11043}
11044
11045// MarshalJSON implements the json.Marshaller interface for type NetworkVirtualAppliancePropertiesFormat.
11046func (n NetworkVirtualAppliancePropertiesFormat) MarshalJSON() ([]byte, error) {
11047	objectMap := make(map[string]interface{})
11048	populate(objectMap, "addressPrefix", n.AddressPrefix)
11049	populate(objectMap, "bootStrapConfigurationBlobs", n.BootStrapConfigurationBlobs)
11050	populate(objectMap, "cloudInitConfiguration", n.CloudInitConfiguration)
11051	populate(objectMap, "cloudInitConfigurationBlobs", n.CloudInitConfigurationBlobs)
11052	populate(objectMap, "inboundSecurityRules", n.InboundSecurityRules)
11053	populate(objectMap, "nvaSku", n.NvaSKU)
11054	populate(objectMap, "provisioningState", n.ProvisioningState)
11055	populate(objectMap, "virtualApplianceAsn", n.VirtualApplianceAsn)
11056	populate(objectMap, "virtualApplianceNics", n.VirtualApplianceNics)
11057	populate(objectMap, "virtualApplianceSites", n.VirtualApplianceSites)
11058	populate(objectMap, "virtualHub", n.VirtualHub)
11059	return json.Marshal(objectMap)
11060}
11061
11062// NetworkVirtualApplianceSKU - Definition of the NetworkVirtualApplianceSkus resource.
11063type NetworkVirtualApplianceSKU struct {
11064	Resource
11065	// NetworkVirtualApplianceSku properties.
11066	Properties *NetworkVirtualApplianceSKUPropertiesFormat `json:"properties,omitempty"`
11067
11068	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
11069	Etag *string `json:"etag,omitempty" azure:"ro"`
11070}
11071
11072// MarshalJSON implements the json.Marshaller interface for type NetworkVirtualApplianceSKU.
11073func (n NetworkVirtualApplianceSKU) MarshalJSON() ([]byte, error) {
11074	objectMap := n.Resource.marshalInternal()
11075	populate(objectMap, "etag", n.Etag)
11076	populate(objectMap, "properties", n.Properties)
11077	return json.Marshal(objectMap)
11078}
11079
11080// NetworkVirtualApplianceSKUInstances - List of available Sku and instances.
11081type NetworkVirtualApplianceSKUInstances struct {
11082	// READ-ONLY; Instance Count.
11083	InstanceCount *int32 `json:"instanceCount,omitempty" azure:"ro"`
11084
11085	// READ-ONLY; Scale Unit.
11086	ScaleUnit *string `json:"scaleUnit,omitempty" azure:"ro"`
11087}
11088
11089// NetworkVirtualApplianceSKUListResult - Response for ListNetworkVirtualApplianceSkus API service call.
11090type NetworkVirtualApplianceSKUListResult struct {
11091	// URL to get the next set of results.
11092	NextLink *string `json:"nextLink,omitempty"`
11093
11094	// List of Network Virtual Appliance Skus that are available.
11095	Value []*NetworkVirtualApplianceSKU `json:"value,omitempty"`
11096}
11097
11098// MarshalJSON implements the json.Marshaller interface for type NetworkVirtualApplianceSKUListResult.
11099func (n NetworkVirtualApplianceSKUListResult) MarshalJSON() ([]byte, error) {
11100	objectMap := make(map[string]interface{})
11101	populate(objectMap, "nextLink", n.NextLink)
11102	populate(objectMap, "value", n.Value)
11103	return json.Marshal(objectMap)
11104}
11105
11106// NetworkVirtualApplianceSKUPropertiesFormat - Properties specific to NetworkVirtualApplianceSkus.
11107type NetworkVirtualApplianceSKUPropertiesFormat struct {
11108	// The list of scale units available.
11109	AvailableScaleUnits []*NetworkVirtualApplianceSKUInstances `json:"availableScaleUnits,omitempty"`
11110
11111	// READ-ONLY; Available Network Virtual Appliance versions.
11112	AvailableVersions []*string `json:"availableVersions,omitempty" azure:"ro"`
11113
11114	// READ-ONLY; Network Virtual Appliance Sku vendor.
11115	Vendor *string `json:"vendor,omitempty" azure:"ro"`
11116}
11117
11118// MarshalJSON implements the json.Marshaller interface for type NetworkVirtualApplianceSKUPropertiesFormat.
11119func (n NetworkVirtualApplianceSKUPropertiesFormat) MarshalJSON() ([]byte, error) {
11120	objectMap := make(map[string]interface{})
11121	populate(objectMap, "availableScaleUnits", n.AvailableScaleUnits)
11122	populate(objectMap, "availableVersions", n.AvailableVersions)
11123	populate(objectMap, "vendor", n.Vendor)
11124	return json.Marshal(objectMap)
11125}
11126
11127// NetworkVirtualApplianceSiteListResult - Response for ListNetworkVirtualApplianceSites API service call.
11128type NetworkVirtualApplianceSiteListResult struct {
11129	// URL to get the next set of results.
11130	NextLink *string `json:"nextLink,omitempty"`
11131
11132	// List of Network Virtual Appliance sites.
11133	Value []*VirtualApplianceSite `json:"value,omitempty"`
11134}
11135
11136// MarshalJSON implements the json.Marshaller interface for type NetworkVirtualApplianceSiteListResult.
11137func (n NetworkVirtualApplianceSiteListResult) MarshalJSON() ([]byte, error) {
11138	objectMap := make(map[string]interface{})
11139	populate(objectMap, "nextLink", n.NextLink)
11140	populate(objectMap, "value", n.Value)
11141	return json.Marshal(objectMap)
11142}
11143
11144// NetworkVirtualAppliancesBeginCreateOrUpdateOptions contains the optional parameters for the NetworkVirtualAppliances.BeginCreateOrUpdate method.
11145type NetworkVirtualAppliancesBeginCreateOrUpdateOptions struct {
11146	// placeholder for future optional parameters
11147}
11148
11149// NetworkVirtualAppliancesBeginDeleteOptions contains the optional parameters for the NetworkVirtualAppliances.BeginDelete method.
11150type NetworkVirtualAppliancesBeginDeleteOptions struct {
11151	// placeholder for future optional parameters
11152}
11153
11154// NetworkVirtualAppliancesGetOptions contains the optional parameters for the NetworkVirtualAppliances.Get method.
11155type NetworkVirtualAppliancesGetOptions struct {
11156	// Expands referenced resources.
11157	Expand *string
11158}
11159
11160// NetworkVirtualAppliancesListByResourceGroupOptions contains the optional parameters for the NetworkVirtualAppliances.ListByResourceGroup method.
11161type NetworkVirtualAppliancesListByResourceGroupOptions struct {
11162	// placeholder for future optional parameters
11163}
11164
11165// NetworkVirtualAppliancesListOptions contains the optional parameters for the NetworkVirtualAppliances.List method.
11166type NetworkVirtualAppliancesListOptions struct {
11167	// placeholder for future optional parameters
11168}
11169
11170// NetworkVirtualAppliancesUpdateTagsOptions contains the optional parameters for the NetworkVirtualAppliances.UpdateTags method.
11171type NetworkVirtualAppliancesUpdateTagsOptions struct {
11172	// placeholder for future optional parameters
11173}
11174
11175// NetworkWatcher - Network watcher in a resource group.
11176type NetworkWatcher struct {
11177	Resource
11178	// Properties of the network watcher.
11179	Properties *NetworkWatcherPropertiesFormat `json:"properties,omitempty"`
11180
11181	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
11182	Etag *string `json:"etag,omitempty" azure:"ro"`
11183}
11184
11185// MarshalJSON implements the json.Marshaller interface for type NetworkWatcher.
11186func (n NetworkWatcher) MarshalJSON() ([]byte, error) {
11187	objectMap := n.Resource.marshalInternal()
11188	populate(objectMap, "etag", n.Etag)
11189	populate(objectMap, "properties", n.Properties)
11190	return json.Marshal(objectMap)
11191}
11192
11193// NetworkWatcherListResult - Response for ListNetworkWatchers API service call.
11194type NetworkWatcherListResult struct {
11195	// List of network watcher resources.
11196	Value []*NetworkWatcher `json:"value,omitempty"`
11197}
11198
11199// MarshalJSON implements the json.Marshaller interface for type NetworkWatcherListResult.
11200func (n NetworkWatcherListResult) MarshalJSON() ([]byte, error) {
11201	objectMap := make(map[string]interface{})
11202	populate(objectMap, "value", n.Value)
11203	return json.Marshal(objectMap)
11204}
11205
11206// NetworkWatcherPropertiesFormat - The network watcher properties.
11207type NetworkWatcherPropertiesFormat struct {
11208	// READ-ONLY; The provisioning state of the network watcher resource.
11209	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
11210}
11211
11212// NetworkWatchersBeginCheckConnectivityOptions contains the optional parameters for the NetworkWatchers.BeginCheckConnectivity method.
11213type NetworkWatchersBeginCheckConnectivityOptions struct {
11214	// placeholder for future optional parameters
11215}
11216
11217// NetworkWatchersBeginDeleteOptions contains the optional parameters for the NetworkWatchers.BeginDelete method.
11218type NetworkWatchersBeginDeleteOptions struct {
11219	// placeholder for future optional parameters
11220}
11221
11222// NetworkWatchersBeginGetAzureReachabilityReportOptions contains the optional parameters for the NetworkWatchers.BeginGetAzureReachabilityReport method.
11223type NetworkWatchersBeginGetAzureReachabilityReportOptions struct {
11224	// placeholder for future optional parameters
11225}
11226
11227// NetworkWatchersBeginGetFlowLogStatusOptions contains the optional parameters for the NetworkWatchers.BeginGetFlowLogStatus method.
11228type NetworkWatchersBeginGetFlowLogStatusOptions struct {
11229	// placeholder for future optional parameters
11230}
11231
11232// NetworkWatchersBeginGetNetworkConfigurationDiagnosticOptions contains the optional parameters for the NetworkWatchers.BeginGetNetworkConfigurationDiagnostic
11233// method.
11234type NetworkWatchersBeginGetNetworkConfigurationDiagnosticOptions struct {
11235	// placeholder for future optional parameters
11236}
11237
11238// NetworkWatchersBeginGetNextHopOptions contains the optional parameters for the NetworkWatchers.BeginGetNextHop method.
11239type NetworkWatchersBeginGetNextHopOptions struct {
11240	// placeholder for future optional parameters
11241}
11242
11243// NetworkWatchersBeginGetTroubleshootingOptions contains the optional parameters for the NetworkWatchers.BeginGetTroubleshooting method.
11244type NetworkWatchersBeginGetTroubleshootingOptions struct {
11245	// placeholder for future optional parameters
11246}
11247
11248// NetworkWatchersBeginGetTroubleshootingResultOptions contains the optional parameters for the NetworkWatchers.BeginGetTroubleshootingResult method.
11249type NetworkWatchersBeginGetTroubleshootingResultOptions struct {
11250	// placeholder for future optional parameters
11251}
11252
11253// NetworkWatchersBeginGetVMSecurityRulesOptions contains the optional parameters for the NetworkWatchers.BeginGetVMSecurityRules method.
11254type NetworkWatchersBeginGetVMSecurityRulesOptions struct {
11255	// placeholder for future optional parameters
11256}
11257
11258// NetworkWatchersBeginListAvailableProvidersOptions contains the optional parameters for the NetworkWatchers.BeginListAvailableProviders method.
11259type NetworkWatchersBeginListAvailableProvidersOptions struct {
11260	// placeholder for future optional parameters
11261}
11262
11263// NetworkWatchersBeginSetFlowLogConfigurationOptions contains the optional parameters for the NetworkWatchers.BeginSetFlowLogConfiguration method.
11264type NetworkWatchersBeginSetFlowLogConfigurationOptions struct {
11265	// placeholder for future optional parameters
11266}
11267
11268// NetworkWatchersBeginVerifyIPFlowOptions contains the optional parameters for the NetworkWatchers.BeginVerifyIPFlow method.
11269type NetworkWatchersBeginVerifyIPFlowOptions struct {
11270	// placeholder for future optional parameters
11271}
11272
11273// NetworkWatchersCreateOrUpdateOptions contains the optional parameters for the NetworkWatchers.CreateOrUpdate method.
11274type NetworkWatchersCreateOrUpdateOptions struct {
11275	// placeholder for future optional parameters
11276}
11277
11278// NetworkWatchersGetOptions contains the optional parameters for the NetworkWatchers.Get method.
11279type NetworkWatchersGetOptions struct {
11280	// placeholder for future optional parameters
11281}
11282
11283// NetworkWatchersGetTopologyOptions contains the optional parameters for the NetworkWatchers.GetTopology method.
11284type NetworkWatchersGetTopologyOptions struct {
11285	// placeholder for future optional parameters
11286}
11287
11288// NetworkWatchersListAllOptions contains the optional parameters for the NetworkWatchers.ListAll method.
11289type NetworkWatchersListAllOptions struct {
11290	// placeholder for future optional parameters
11291}
11292
11293// NetworkWatchersListOptions contains the optional parameters for the NetworkWatchers.List method.
11294type NetworkWatchersListOptions struct {
11295	// placeholder for future optional parameters
11296}
11297
11298// NetworkWatchersUpdateTagsOptions contains the optional parameters for the NetworkWatchers.UpdateTags method.
11299type NetworkWatchersUpdateTagsOptions struct {
11300	// placeholder for future optional parameters
11301}
11302
11303// NextHopParameters - Parameters that define the source and destination endpoint.
11304type NextHopParameters struct {
11305	// REQUIRED; The destination IP address.
11306	DestinationIPAddress *string `json:"destinationIPAddress,omitempty"`
11307
11308	// REQUIRED; The source IP address.
11309	SourceIPAddress *string `json:"sourceIPAddress,omitempty"`
11310
11311	// REQUIRED; The resource identifier of the target resource against which the action is to be performed.
11312	TargetResourceID *string `json:"targetResourceId,omitempty"`
11313
11314	// The NIC ID. (If VM has multiple NICs and IP forwarding is enabled on any of the nics, then this parameter must be specified. Otherwise optional).
11315	TargetNicResourceID *string `json:"targetNicResourceId,omitempty"`
11316}
11317
11318// NextHopResult - The information about next hop from the specified VM.
11319type NextHopResult struct {
11320	// Next hop IP Address.
11321	NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"`
11322
11323	// Next hop type.
11324	NextHopType *NextHopType `json:"nextHopType,omitempty"`
11325
11326	// The resource identifier for the route table associated with the route being returned. If the route being returned does not correspond to any user created
11327	// routes then this field will be the string
11328	// 'System Route'.
11329	RouteTableID *string `json:"routeTableId,omitempty"`
11330}
11331
11332// O365BreakOutCategoryPolicies - Office365 breakout categories.
11333type O365BreakOutCategoryPolicies struct {
11334	// Flag to control allow category.
11335	Allow *bool `json:"allow,omitempty"`
11336
11337	// Flag to control default category.
11338	Default *bool `json:"default,omitempty"`
11339
11340	// Flag to control optimize category.
11341	Optimize *bool `json:"optimize,omitempty"`
11342}
11343
11344// O365PolicyProperties - The Office365 breakout policy.
11345type O365PolicyProperties struct {
11346	// Office365 breakout categories.
11347	BreakOutCategories *O365BreakOutCategoryPolicies `json:"breakOutCategories,omitempty"`
11348}
11349
11350// Office365PolicyProperties - Network Virtual Appliance Sku Properties.
11351type Office365PolicyProperties struct {
11352	// Office 365 breakout categories.
11353	BreakOutCategories *BreakOutCategoryPolicies `json:"breakOutCategories,omitempty"`
11354}
11355
11356// Operation - Network REST API operation definition.
11357type Operation struct {
11358	// Display metadata associated with the operation.
11359	Display *OperationDisplay `json:"display,omitempty"`
11360
11361	// Operation name: {provider}/{resource}/{operation}.
11362	Name *string `json:"name,omitempty"`
11363
11364	// Origin of the operation.
11365	Origin *string `json:"origin,omitempty"`
11366
11367	// Operation properties format.
11368	Properties *OperationPropertiesFormat `json:"properties,omitempty"`
11369}
11370
11371// OperationDisplay - Display metadata associated with the operation.
11372type OperationDisplay struct {
11373	// Description of the operation.
11374	Description *string `json:"description,omitempty"`
11375
11376	// Type of the operation: get, read, delete, etc.
11377	Operation *string `json:"operation,omitempty"`
11378
11379	// Service provider: Microsoft Network.
11380	Provider *string `json:"provider,omitempty"`
11381
11382	// Resource on which the operation is performed.
11383	Resource *string `json:"resource,omitempty"`
11384}
11385
11386// OperationListResult - Result of the request to list Network operations. It contains a list of operations and a URL link to get the next set of results.
11387type OperationListResult struct {
11388	// URL to get the next set of operation list results if there are any.
11389	NextLink *string `json:"nextLink,omitempty"`
11390
11391	// List of Network operations supported by the Network resource provider.
11392	Value []*Operation `json:"value,omitempty"`
11393}
11394
11395// MarshalJSON implements the json.Marshaller interface for type OperationListResult.
11396func (o OperationListResult) MarshalJSON() ([]byte, error) {
11397	objectMap := make(map[string]interface{})
11398	populate(objectMap, "nextLink", o.NextLink)
11399	populate(objectMap, "value", o.Value)
11400	return json.Marshal(objectMap)
11401}
11402
11403// OperationPropertiesFormat - Description of operation properties format.
11404type OperationPropertiesFormat struct {
11405	// Specification of the service.
11406	ServiceSpecification *OperationPropertiesFormatServiceSpecification `json:"serviceSpecification,omitempty"`
11407}
11408
11409// OperationPropertiesFormatServiceSpecification - Specification of the service.
11410type OperationPropertiesFormatServiceSpecification struct {
11411	// Operation log specification.
11412	LogSpecifications []*LogSpecification `json:"logSpecifications,omitempty"`
11413
11414	// Operation service specification.
11415	MetricSpecifications []*MetricSpecification `json:"metricSpecifications,omitempty"`
11416}
11417
11418// MarshalJSON implements the json.Marshaller interface for type OperationPropertiesFormatServiceSpecification.
11419func (o OperationPropertiesFormatServiceSpecification) MarshalJSON() ([]byte, error) {
11420	objectMap := make(map[string]interface{})
11421	populate(objectMap, "logSpecifications", o.LogSpecifications)
11422	populate(objectMap, "metricSpecifications", o.MetricSpecifications)
11423	return json.Marshal(objectMap)
11424}
11425
11426// OperationsListOptions contains the optional parameters for the Operations.List method.
11427type OperationsListOptions struct {
11428	// placeholder for future optional parameters
11429}
11430
11431// OutboundRule - Outbound rule of the load balancer.
11432type OutboundRule struct {
11433	SubResource
11434	// The name of the resource that is unique within the set of outbound rules used by the load balancer. This name can be used to access the resource.
11435	Name *string `json:"name,omitempty"`
11436
11437	// Properties of load balancer outbound rule.
11438	Properties *OutboundRulePropertiesFormat `json:"properties,omitempty"`
11439
11440	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
11441	Etag *string `json:"etag,omitempty" azure:"ro"`
11442
11443	// READ-ONLY; Type of the resource.
11444	Type *string `json:"type,omitempty" azure:"ro"`
11445}
11446
11447// MarshalJSON implements the json.Marshaller interface for type OutboundRule.
11448func (o OutboundRule) MarshalJSON() ([]byte, error) {
11449	objectMap := o.SubResource.marshalInternal()
11450	populate(objectMap, "etag", o.Etag)
11451	populate(objectMap, "name", o.Name)
11452	populate(objectMap, "properties", o.Properties)
11453	populate(objectMap, "type", o.Type)
11454	return json.Marshal(objectMap)
11455}
11456
11457// OutboundRulePropertiesFormat - Outbound rule of the load balancer.
11458type OutboundRulePropertiesFormat struct {
11459	// REQUIRED; A reference to a pool of DIPs. Outbound traffic is randomly load balanced across IPs in the backend IPs.
11460	BackendAddressPool *SubResource `json:"backendAddressPool,omitempty"`
11461
11462	// REQUIRED; The Frontend IP addresses of the load balancer.
11463	FrontendIPConfigurations []*SubResource `json:"frontendIPConfigurations,omitempty"`
11464
11465	// REQUIRED; The protocol for the outbound rule in load balancer.
11466	Protocol *LoadBalancerOutboundRuleProtocol `json:"protocol,omitempty"`
11467
11468	// The number of outbound ports to be used for NAT.
11469	AllocatedOutboundPorts *int32 `json:"allocatedOutboundPorts,omitempty"`
11470
11471	// Receive bidirectional TCP Reset on TCP flow idle timeout or unexpected connection termination. This element is only used when the protocol is set to
11472	// TCP.
11473	EnableTCPReset *bool `json:"enableTcpReset,omitempty"`
11474
11475	// The timeout for the TCP idle connection.
11476	IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"`
11477
11478	// READ-ONLY; The provisioning state of the outbound rule resource.
11479	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
11480}
11481
11482// MarshalJSON implements the json.Marshaller interface for type OutboundRulePropertiesFormat.
11483func (o OutboundRulePropertiesFormat) MarshalJSON() ([]byte, error) {
11484	objectMap := make(map[string]interface{})
11485	populate(objectMap, "allocatedOutboundPorts", o.AllocatedOutboundPorts)
11486	populate(objectMap, "backendAddressPool", o.BackendAddressPool)
11487	populate(objectMap, "enableTcpReset", o.EnableTCPReset)
11488	populate(objectMap, "frontendIPConfigurations", o.FrontendIPConfigurations)
11489	populate(objectMap, "idleTimeoutInMinutes", o.IdleTimeoutInMinutes)
11490	populate(objectMap, "protocol", o.Protocol)
11491	populate(objectMap, "provisioningState", o.ProvisioningState)
11492	return json.Marshal(objectMap)
11493}
11494
11495// OwaspCrsExclusionEntry - Allow to exclude some variable satisfy the condition for the WAF check.
11496type OwaspCrsExclusionEntry struct {
11497	// REQUIRED; The variable to be excluded.
11498	MatchVariable *OwaspCrsExclusionEntryMatchVariable `json:"matchVariable,omitempty"`
11499
11500	// REQUIRED; When matchVariable is a collection, operator used to specify which elements in the collection this exclusion applies to.
11501	Selector *string `json:"selector,omitempty"`
11502
11503	// REQUIRED; When matchVariable is a collection, operate on the selector to specify which elements in the collection this exclusion applies to.
11504	SelectorMatchOperator *OwaspCrsExclusionEntrySelectorMatchOperator `json:"selectorMatchOperator,omitempty"`
11505}
11506
11507// P2SConnectionConfiguration Resource.
11508type P2SConnectionConfiguration struct {
11509	SubResource
11510	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
11511	Name *string `json:"name,omitempty"`
11512
11513	// Properties of the P2S connection configuration.
11514	Properties *P2SConnectionConfigurationProperties `json:"properties,omitempty"`
11515
11516	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
11517	Etag *string `json:"etag,omitempty" azure:"ro"`
11518}
11519
11520// MarshalJSON implements the json.Marshaller interface for type P2SConnectionConfiguration.
11521func (p P2SConnectionConfiguration) MarshalJSON() ([]byte, error) {
11522	objectMap := p.SubResource.marshalInternal()
11523	populate(objectMap, "etag", p.Etag)
11524	populate(objectMap, "name", p.Name)
11525	populate(objectMap, "properties", p.Properties)
11526	return json.Marshal(objectMap)
11527}
11528
11529// P2SConnectionConfigurationProperties - Parameters for P2SConnectionConfiguration.
11530type P2SConnectionConfigurationProperties struct {
11531	// Flag indicating whether the enable internet security flag is turned on for the P2S Connections or not.
11532	EnableInternetSecurity *bool `json:"enableInternetSecurity,omitempty"`
11533
11534	// The Routing Configuration indicating the associated and propagated route tables on this connection.
11535	RoutingConfiguration *RoutingConfiguration `json:"routingConfiguration,omitempty"`
11536
11537	// The reference to the address space resource which represents Address space for P2S VpnClient.
11538	VPNClientAddressPool *AddressSpace `json:"vpnClientAddressPool,omitempty"`
11539
11540	// READ-ONLY; The provisioning state of the P2SConnectionConfiguration resource.
11541	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
11542}
11543
11544// P2SVPNConnectionHealth - P2S Vpn connection detailed health written to sas url.
11545type P2SVPNConnectionHealth struct {
11546	// Returned sas url of the blob to which the p2s vpn connection detailed health will be written.
11547	SasURL *string `json:"sasUrl,omitempty"`
11548}
11549
11550// P2SVPNConnectionHealthRequest - List of P2S Vpn connection health request.
11551type P2SVPNConnectionHealthRequest struct {
11552	// The sas-url to download the P2S Vpn connection health detail.
11553	OutputBlobSasURL *string `json:"outputBlobSasUrl,omitempty"`
11554
11555	// The list of p2s vpn user names whose p2s vpn connection detailed health to retrieve for.
11556	VPNUserNamesFilter []*string `json:"vpnUserNamesFilter,omitempty"`
11557}
11558
11559// MarshalJSON implements the json.Marshaller interface for type P2SVPNConnectionHealthRequest.
11560func (p P2SVPNConnectionHealthRequest) MarshalJSON() ([]byte, error) {
11561	objectMap := make(map[string]interface{})
11562	populate(objectMap, "outputBlobSasUrl", p.OutputBlobSasURL)
11563	populate(objectMap, "vpnUserNamesFilter", p.VPNUserNamesFilter)
11564	return json.Marshal(objectMap)
11565}
11566
11567// P2SVPNConnectionRequest - List of p2s vpn connections to be disconnected.
11568type P2SVPNConnectionRequest struct {
11569	// List of p2s vpn connection Ids.
11570	VPNConnectionIDs []*string `json:"vpnConnectionIds,omitempty"`
11571}
11572
11573// MarshalJSON implements the json.Marshaller interface for type P2SVPNConnectionRequest.
11574func (p P2SVPNConnectionRequest) MarshalJSON() ([]byte, error) {
11575	objectMap := make(map[string]interface{})
11576	populate(objectMap, "vpnConnectionIds", p.VPNConnectionIDs)
11577	return json.Marshal(objectMap)
11578}
11579
11580// P2SVPNGateway - P2SVpnGateway Resource.
11581type P2SVPNGateway struct {
11582	Resource
11583	// Properties of the P2SVpnGateway.
11584	Properties *P2SVPNGatewayProperties `json:"properties,omitempty"`
11585
11586	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
11587	Etag *string `json:"etag,omitempty" azure:"ro"`
11588}
11589
11590// MarshalJSON implements the json.Marshaller interface for type P2SVPNGateway.
11591func (p P2SVPNGateway) MarshalJSON() ([]byte, error) {
11592	objectMap := p.Resource.marshalInternal()
11593	populate(objectMap, "etag", p.Etag)
11594	populate(objectMap, "properties", p.Properties)
11595	return json.Marshal(objectMap)
11596}
11597
11598// P2SVPNGatewayProperties - Parameters for P2SVpnGateway.
11599type P2SVPNGatewayProperties struct {
11600	// List of all customer specified DNS servers IP addresses.
11601	CustomDNSServers []*string `json:"customDnsServers,omitempty"`
11602
11603	// Enable Routing Preference property for the Public IP Interface of the P2SVpnGateway.
11604	IsRoutingPreferenceInternet *bool `json:"isRoutingPreferenceInternet,omitempty"`
11605
11606	// List of all p2s connection configurations of the gateway.
11607	P2SConnectionConfigurations []*P2SConnectionConfiguration `json:"p2SConnectionConfigurations,omitempty"`
11608
11609	// The scale unit for this p2s vpn gateway.
11610	VPNGatewayScaleUnit *int32 `json:"vpnGatewayScaleUnit,omitempty"`
11611
11612	// The VpnServerConfiguration to which the p2sVpnGateway is attached to.
11613	VPNServerConfiguration *SubResource `json:"vpnServerConfiguration,omitempty"`
11614
11615	// The VirtualHub to which the gateway belongs.
11616	VirtualHub *SubResource `json:"virtualHub,omitempty"`
11617
11618	// READ-ONLY; The provisioning state of the P2S VPN gateway resource.
11619	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
11620
11621	// READ-ONLY; All P2S VPN clients' connection health status.
11622	VPNClientConnectionHealth *VPNClientConnectionHealth `json:"vpnClientConnectionHealth,omitempty" azure:"ro"`
11623}
11624
11625// MarshalJSON implements the json.Marshaller interface for type P2SVPNGatewayProperties.
11626func (p P2SVPNGatewayProperties) MarshalJSON() ([]byte, error) {
11627	objectMap := make(map[string]interface{})
11628	populate(objectMap, "customDnsServers", p.CustomDNSServers)
11629	populate(objectMap, "isRoutingPreferenceInternet", p.IsRoutingPreferenceInternet)
11630	populate(objectMap, "p2SConnectionConfigurations", p.P2SConnectionConfigurations)
11631	populate(objectMap, "provisioningState", p.ProvisioningState)
11632	populate(objectMap, "vpnClientConnectionHealth", p.VPNClientConnectionHealth)
11633	populate(objectMap, "vpnGatewayScaleUnit", p.VPNGatewayScaleUnit)
11634	populate(objectMap, "vpnServerConfiguration", p.VPNServerConfiguration)
11635	populate(objectMap, "virtualHub", p.VirtualHub)
11636	return json.Marshal(objectMap)
11637}
11638
11639// P2SVPNGatewaysBeginCreateOrUpdateOptions contains the optional parameters for the P2SVPNGateways.BeginCreateOrUpdate method.
11640type P2SVPNGatewaysBeginCreateOrUpdateOptions struct {
11641	// placeholder for future optional parameters
11642}
11643
11644// P2SVPNGatewaysBeginDeleteOptions contains the optional parameters for the P2SVPNGateways.BeginDelete method.
11645type P2SVPNGatewaysBeginDeleteOptions struct {
11646	// placeholder for future optional parameters
11647}
11648
11649// P2SVPNGatewaysBeginDisconnectP2SVPNConnectionsOptions contains the optional parameters for the P2SVPNGateways.BeginDisconnectP2SVPNConnections method.
11650type P2SVPNGatewaysBeginDisconnectP2SVPNConnectionsOptions struct {
11651	// placeholder for future optional parameters
11652}
11653
11654// P2SVPNGatewaysBeginGenerateVPNProfileOptions contains the optional parameters for the P2SVPNGateways.BeginGenerateVPNProfile method.
11655type P2SVPNGatewaysBeginGenerateVPNProfileOptions struct {
11656	// placeholder for future optional parameters
11657}
11658
11659// P2SVPNGatewaysBeginGetP2SVPNConnectionHealthDetailedOptions contains the optional parameters for the P2SVPNGateways.BeginGetP2SVPNConnectionHealthDetailed
11660// method.
11661type P2SVPNGatewaysBeginGetP2SVPNConnectionHealthDetailedOptions struct {
11662	// placeholder for future optional parameters
11663}
11664
11665// P2SVPNGatewaysBeginGetP2SVPNConnectionHealthOptions contains the optional parameters for the P2SVPNGateways.BeginGetP2SVPNConnectionHealth method.
11666type P2SVPNGatewaysBeginGetP2SVPNConnectionHealthOptions struct {
11667	// placeholder for future optional parameters
11668}
11669
11670// P2SVPNGatewaysBeginResetOptions contains the optional parameters for the P2SVPNGateways.BeginReset method.
11671type P2SVPNGatewaysBeginResetOptions struct {
11672	// placeholder for future optional parameters
11673}
11674
11675// P2SVPNGatewaysBeginUpdateTagsOptions contains the optional parameters for the P2SVPNGateways.BeginUpdateTags method.
11676type P2SVPNGatewaysBeginUpdateTagsOptions struct {
11677	// placeholder for future optional parameters
11678}
11679
11680// P2SVPNGatewaysGetOptions contains the optional parameters for the P2SVPNGateways.Get method.
11681type P2SVPNGatewaysGetOptions struct {
11682	// placeholder for future optional parameters
11683}
11684
11685// P2SVPNGatewaysListByResourceGroupOptions contains the optional parameters for the P2SVPNGateways.ListByResourceGroup method.
11686type P2SVPNGatewaysListByResourceGroupOptions struct {
11687	// placeholder for future optional parameters
11688}
11689
11690// P2SVPNGatewaysListOptions contains the optional parameters for the P2SVPNGateways.List method.
11691type P2SVPNGatewaysListOptions struct {
11692	// placeholder for future optional parameters
11693}
11694
11695// P2SVPNProfileParameters - Vpn Client Parameters for package generation.
11696type P2SVPNProfileParameters struct {
11697	// VPN client authentication method.
11698	AuthenticationMethod *AuthenticationMethod `json:"authenticationMethod,omitempty"`
11699}
11700
11701// PacketCapture - Parameters that define the create packet capture operation.
11702type PacketCapture struct {
11703	// REQUIRED; Properties of the packet capture.
11704	Properties *PacketCaptureParameters `json:"properties,omitempty"`
11705}
11706
11707// PacketCaptureFilter - Filter that is applied to packet capture request. Multiple filters can be applied.
11708type PacketCaptureFilter struct {
11709	// Local IP Address to be filtered on. Notation: "127.0.0.1" for single address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5"? for multiple
11710	// entries. Multiple ranges not currently
11711	// supported. Mixing ranges with multiple entries not currently supported. Default = null.
11712	LocalIPAddress *string `json:"localIPAddress,omitempty"`
11713
11714	// Local port to be filtered on. Notation: "80" for single port entry."80-85" for range. "80;443;" for multiple entries. Multiple ranges not currently supported.
11715	// Mixing ranges with multiple entries not
11716	// currently supported. Default = null.
11717	LocalPort *string `json:"localPort,omitempty"`
11718
11719	// Protocol to be filtered on.
11720	Protocol *PcProtocol `json:"protocol,omitempty"`
11721
11722	// Local IP Address to be filtered on. Notation: "127.0.0.1" for single address entry. "127.0.0.1-127.0.0.255" for range. "127.0.0.1;127.0.0.5;" for multiple
11723	// entries. Multiple ranges not currently
11724	// supported. Mixing ranges with multiple entries not currently supported. Default = null.
11725	RemoteIPAddress *string `json:"remoteIPAddress,omitempty"`
11726
11727	// Remote port to be filtered on. Notation: "80" for single port entry."80-85" for range. "80;443;" for multiple entries. Multiple ranges not currently
11728	// supported. Mixing ranges with multiple entries not
11729	// currently supported. Default = null.
11730	RemotePort *string `json:"remotePort,omitempty"`
11731}
11732
11733// PacketCaptureListResult - List of packet capture sessions.
11734type PacketCaptureListResult struct {
11735	// Information about packet capture sessions.
11736	Value []*PacketCaptureResult `json:"value,omitempty"`
11737}
11738
11739// MarshalJSON implements the json.Marshaller interface for type PacketCaptureListResult.
11740func (p PacketCaptureListResult) MarshalJSON() ([]byte, error) {
11741	objectMap := make(map[string]interface{})
11742	populate(objectMap, "value", p.Value)
11743	return json.Marshal(objectMap)
11744}
11745
11746// PacketCaptureParameters - Parameters that define the create packet capture operation.
11747type PacketCaptureParameters struct {
11748	// REQUIRED; The storage location for a packet capture session.
11749	StorageLocation *PacketCaptureStorageLocation `json:"storageLocation,omitempty"`
11750
11751	// REQUIRED; The ID of the targeted resource, only VM is currently supported.
11752	Target *string `json:"target,omitempty"`
11753
11754	// Number of bytes captured per packet, the remaining bytes are truncated.
11755	BytesToCapturePerPacket *int64 `json:"bytesToCapturePerPacket,omitempty"`
11756
11757	// A list of packet capture filters.
11758	Filters []*PacketCaptureFilter `json:"filters,omitempty"`
11759
11760	// Maximum duration of the capture session in seconds.
11761	TimeLimitInSeconds *int32 `json:"timeLimitInSeconds,omitempty"`
11762
11763	// Maximum size of the capture output.
11764	TotalBytesPerSession *int64 `json:"totalBytesPerSession,omitempty"`
11765}
11766
11767// MarshalJSON implements the json.Marshaller interface for type PacketCaptureParameters.
11768func (p PacketCaptureParameters) MarshalJSON() ([]byte, error) {
11769	objectMap := p.marshalInternal()
11770	return json.Marshal(objectMap)
11771}
11772
11773func (p PacketCaptureParameters) marshalInternal() map[string]interface{} {
11774	objectMap := make(map[string]interface{})
11775	populate(objectMap, "bytesToCapturePerPacket", p.BytesToCapturePerPacket)
11776	populate(objectMap, "filters", p.Filters)
11777	populate(objectMap, "storageLocation", p.StorageLocation)
11778	populate(objectMap, "target", p.Target)
11779	populate(objectMap, "timeLimitInSeconds", p.TimeLimitInSeconds)
11780	populate(objectMap, "totalBytesPerSession", p.TotalBytesPerSession)
11781	return objectMap
11782}
11783
11784// PacketCaptureQueryStatusResult - Status of packet capture session.
11785type PacketCaptureQueryStatusResult struct {
11786	// The start time of the packet capture session.
11787	CaptureStartTime *time.Time `json:"captureStartTime,omitempty"`
11788
11789	// The ID of the packet capture resource.
11790	ID *string `json:"id,omitempty"`
11791
11792	// The name of the packet capture resource.
11793	Name *string `json:"name,omitempty"`
11794
11795	// List of errors of packet capture session.
11796	PacketCaptureError []*PcError `json:"packetCaptureError,omitempty"`
11797
11798	// The status of the packet capture session.
11799	PacketCaptureStatus *PcStatus `json:"packetCaptureStatus,omitempty"`
11800
11801	// The reason the current packet capture session was stopped.
11802	StopReason *string `json:"stopReason,omitempty"`
11803}
11804
11805// MarshalJSON implements the json.Marshaller interface for type PacketCaptureQueryStatusResult.
11806func (p PacketCaptureQueryStatusResult) MarshalJSON() ([]byte, error) {
11807	objectMap := make(map[string]interface{})
11808	populate(objectMap, "captureStartTime", (*timeRFC3339)(p.CaptureStartTime))
11809	populate(objectMap, "id", p.ID)
11810	populate(objectMap, "name", p.Name)
11811	populate(objectMap, "packetCaptureError", p.PacketCaptureError)
11812	populate(objectMap, "packetCaptureStatus", p.PacketCaptureStatus)
11813	populate(objectMap, "stopReason", p.StopReason)
11814	return json.Marshal(objectMap)
11815}
11816
11817// UnmarshalJSON implements the json.Unmarshaller interface for type PacketCaptureQueryStatusResult.
11818func (p *PacketCaptureQueryStatusResult) UnmarshalJSON(data []byte) error {
11819	var rawMsg map[string]json.RawMessage
11820	if err := json.Unmarshal(data, &rawMsg); err != nil {
11821		return err
11822	}
11823	for key, val := range rawMsg {
11824		var err error
11825		switch key {
11826		case "captureStartTime":
11827			var aux timeRFC3339
11828			err = unpopulate(val, &aux)
11829			p.CaptureStartTime = (*time.Time)(&aux)
11830			delete(rawMsg, key)
11831		case "id":
11832			err = unpopulate(val, &p.ID)
11833			delete(rawMsg, key)
11834		case "name":
11835			err = unpopulate(val, &p.Name)
11836			delete(rawMsg, key)
11837		case "packetCaptureError":
11838			err = unpopulate(val, &p.PacketCaptureError)
11839			delete(rawMsg, key)
11840		case "packetCaptureStatus":
11841			err = unpopulate(val, &p.PacketCaptureStatus)
11842			delete(rawMsg, key)
11843		case "stopReason":
11844			err = unpopulate(val, &p.StopReason)
11845			delete(rawMsg, key)
11846		}
11847		if err != nil {
11848			return err
11849		}
11850	}
11851	return nil
11852}
11853
11854// PacketCaptureResult - Information about packet capture session.
11855type PacketCaptureResult struct {
11856	// Properties of the packet capture result.
11857	Properties *PacketCaptureResultProperties `json:"properties,omitempty"`
11858
11859	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
11860	Etag *string `json:"etag,omitempty" azure:"ro"`
11861
11862	// READ-ONLY; ID of the packet capture operation.
11863	ID *string `json:"id,omitempty" azure:"ro"`
11864
11865	// READ-ONLY; Name of the packet capture session.
11866	Name *string `json:"name,omitempty" azure:"ro"`
11867}
11868
11869// PacketCaptureResultProperties - The properties of a packet capture session.
11870type PacketCaptureResultProperties struct {
11871	PacketCaptureParameters
11872	// READ-ONLY; The provisioning state of the packet capture session.
11873	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
11874}
11875
11876// MarshalJSON implements the json.Marshaller interface for type PacketCaptureResultProperties.
11877func (p PacketCaptureResultProperties) MarshalJSON() ([]byte, error) {
11878	objectMap := p.PacketCaptureParameters.marshalInternal()
11879	populate(objectMap, "provisioningState", p.ProvisioningState)
11880	return json.Marshal(objectMap)
11881}
11882
11883// PacketCaptureStorageLocation - The storage location for a packet capture session.
11884type PacketCaptureStorageLocation struct {
11885	// A valid local path on the targeting VM. Must include the name of the capture file (*.cap). For linux virtual machine it must start with /var/captures.
11886	// Required if no storage ID is provided, otherwise
11887	// optional.
11888	FilePath *string `json:"filePath,omitempty"`
11889
11890	// The ID of the storage account to save the packet capture session. Required if no local file path is provided.
11891	StorageID *string `json:"storageId,omitempty"`
11892
11893	// The URI of the storage path to save the packet capture. Must be a well-formed URI describing the location to save the packet capture.
11894	StoragePath *string `json:"storagePath,omitempty"`
11895}
11896
11897// PacketCapturesBeginCreateOptions contains the optional parameters for the PacketCaptures.BeginCreate method.
11898type PacketCapturesBeginCreateOptions struct {
11899	// placeholder for future optional parameters
11900}
11901
11902// PacketCapturesBeginDeleteOptions contains the optional parameters for the PacketCaptures.BeginDelete method.
11903type PacketCapturesBeginDeleteOptions struct {
11904	// placeholder for future optional parameters
11905}
11906
11907// PacketCapturesBeginGetStatusOptions contains the optional parameters for the PacketCaptures.BeginGetStatus method.
11908type PacketCapturesBeginGetStatusOptions struct {
11909	// placeholder for future optional parameters
11910}
11911
11912// PacketCapturesBeginStopOptions contains the optional parameters for the PacketCaptures.BeginStop method.
11913type PacketCapturesBeginStopOptions struct {
11914	// placeholder for future optional parameters
11915}
11916
11917// PacketCapturesGetOptions contains the optional parameters for the PacketCaptures.Get method.
11918type PacketCapturesGetOptions struct {
11919	// placeholder for future optional parameters
11920}
11921
11922// PacketCapturesListOptions contains the optional parameters for the PacketCaptures.List method.
11923type PacketCapturesListOptions struct {
11924	// placeholder for future optional parameters
11925}
11926
11927// PatchRouteFilter - Route Filter Resource.
11928type PatchRouteFilter struct {
11929	SubResource
11930	// Properties of the route filter.
11931	Properties *RouteFilterPropertiesFormat `json:"properties,omitempty"`
11932
11933	// Resource tags.
11934	Tags map[string]*string `json:"tags,omitempty"`
11935
11936	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
11937	Etag *string `json:"etag,omitempty" azure:"ro"`
11938
11939	// READ-ONLY; The name of the resource that is unique within a resource group. This name can be used to access the resource.
11940	Name *string `json:"name,omitempty" azure:"ro"`
11941
11942	// READ-ONLY; Resource type.
11943	Type *string `json:"type,omitempty" azure:"ro"`
11944}
11945
11946// MarshalJSON implements the json.Marshaller interface for type PatchRouteFilter.
11947func (p PatchRouteFilter) MarshalJSON() ([]byte, error) {
11948	objectMap := p.SubResource.marshalInternal()
11949	populate(objectMap, "etag", p.Etag)
11950	populate(objectMap, "name", p.Name)
11951	populate(objectMap, "properties", p.Properties)
11952	populate(objectMap, "tags", p.Tags)
11953	populate(objectMap, "type", p.Type)
11954	return json.Marshal(objectMap)
11955}
11956
11957// PatchRouteFilterRule - Route Filter Rule Resource.
11958type PatchRouteFilterRule struct {
11959	SubResource
11960	// Properties of the route filter rule.
11961	Properties *RouteFilterRulePropertiesFormat `json:"properties,omitempty"`
11962
11963	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
11964	Etag *string `json:"etag,omitempty" azure:"ro"`
11965
11966	// READ-ONLY; The name of the resource that is unique within a resource group. This name can be used to access the resource.
11967	Name *string `json:"name,omitempty" azure:"ro"`
11968}
11969
11970// MarshalJSON implements the json.Marshaller interface for type PatchRouteFilterRule.
11971func (p PatchRouteFilterRule) MarshalJSON() ([]byte, error) {
11972	objectMap := p.SubResource.marshalInternal()
11973	populate(objectMap, "etag", p.Etag)
11974	populate(objectMap, "name", p.Name)
11975	populate(objectMap, "properties", p.Properties)
11976	return json.Marshal(objectMap)
11977}
11978
11979// PeerExpressRouteCircuitConnection - Peer Express Route Circuit Connection in an ExpressRouteCircuitPeering resource.
11980type PeerExpressRouteCircuitConnection struct {
11981	SubResource
11982	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
11983	Name *string `json:"name,omitempty"`
11984
11985	// Properties of the peer express route circuit connection.
11986	Properties *PeerExpressRouteCircuitConnectionPropertiesFormat `json:"properties,omitempty"`
11987
11988	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
11989	Etag *string `json:"etag,omitempty" azure:"ro"`
11990
11991	// READ-ONLY; Type of the resource.
11992	Type *string `json:"type,omitempty" azure:"ro"`
11993}
11994
11995// MarshalJSON implements the json.Marshaller interface for type PeerExpressRouteCircuitConnection.
11996func (p PeerExpressRouteCircuitConnection) MarshalJSON() ([]byte, error) {
11997	objectMap := p.SubResource.marshalInternal()
11998	populate(objectMap, "etag", p.Etag)
11999	populate(objectMap, "name", p.Name)
12000	populate(objectMap, "properties", p.Properties)
12001	populate(objectMap, "type", p.Type)
12002	return json.Marshal(objectMap)
12003}
12004
12005// PeerExpressRouteCircuitConnectionListResult - Response for ListPeeredConnections API service call retrieves all global reach peer circuit connections
12006// that belongs to a Private Peering for an ExpressRouteCircuit.
12007type PeerExpressRouteCircuitConnectionListResult struct {
12008	// The URL to get the next set of results.
12009	NextLink *string `json:"nextLink,omitempty"`
12010
12011	// The global reach peer circuit connection associated with Private Peering in an ExpressRoute Circuit.
12012	Value []*PeerExpressRouteCircuitConnection `json:"value,omitempty"`
12013}
12014
12015// MarshalJSON implements the json.Marshaller interface for type PeerExpressRouteCircuitConnectionListResult.
12016func (p PeerExpressRouteCircuitConnectionListResult) MarshalJSON() ([]byte, error) {
12017	objectMap := make(map[string]interface{})
12018	populate(objectMap, "nextLink", p.NextLink)
12019	populate(objectMap, "value", p.Value)
12020	return json.Marshal(objectMap)
12021}
12022
12023// PeerExpressRouteCircuitConnectionPropertiesFormat - Properties of the peer express route circuit connection.
12024type PeerExpressRouteCircuitConnectionPropertiesFormat struct {
12025	// /29 IP address space to carve out Customer addresses for tunnels.
12026	AddressPrefix *string `json:"addressPrefix,omitempty"`
12027
12028	// The resource guid of the authorization used for the express route circuit connection.
12029	AuthResourceGUID *string `json:"authResourceGuid,omitempty"`
12030
12031	// The name of the express route circuit connection resource.
12032	ConnectionName *string `json:"connectionName,omitempty"`
12033
12034	// Reference to Express Route Circuit Private Peering Resource of the circuit.
12035	ExpressRouteCircuitPeering *SubResource `json:"expressRouteCircuitPeering,omitempty"`
12036
12037	// Reference to Express Route Circuit Private Peering Resource of the peered circuit.
12038	PeerExpressRouteCircuitPeering *SubResource `json:"peerExpressRouteCircuitPeering,omitempty"`
12039
12040	// READ-ONLY; Express Route Circuit connection state.
12041	CircuitConnectionStatus *CircuitConnectionStatus `json:"circuitConnectionStatus,omitempty" azure:"ro"`
12042
12043	// READ-ONLY; The provisioning state of the peer express route circuit connection resource.
12044	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
12045}
12046
12047// PeerExpressRouteCircuitConnectionsGetOptions contains the optional parameters for the PeerExpressRouteCircuitConnections.Get method.
12048type PeerExpressRouteCircuitConnectionsGetOptions struct {
12049	// placeholder for future optional parameters
12050}
12051
12052// PeerExpressRouteCircuitConnectionsListOptions contains the optional parameters for the PeerExpressRouteCircuitConnections.List method.
12053type PeerExpressRouteCircuitConnectionsListOptions struct {
12054	// placeholder for future optional parameters
12055}
12056
12057// PeerRoute - Peer routing details.
12058type PeerRoute struct {
12059	// READ-ONLY; The route's AS path sequence.
12060	AsPath *string `json:"asPath,omitempty" azure:"ro"`
12061
12062	// READ-ONLY; The peer's local address.
12063	LocalAddress *string `json:"localAddress,omitempty" azure:"ro"`
12064
12065	// READ-ONLY; The route's network prefix.
12066	Network *string `json:"network,omitempty" azure:"ro"`
12067
12068	// READ-ONLY; The route's next hop.
12069	NextHop *string `json:"nextHop,omitempty" azure:"ro"`
12070
12071	// READ-ONLY; The source this route was learned from.
12072	Origin *string `json:"origin,omitempty" azure:"ro"`
12073
12074	// READ-ONLY; The peer this route was learned from.
12075	SourcePeer *string `json:"sourcePeer,omitempty" azure:"ro"`
12076
12077	// READ-ONLY; The route's weight.
12078	Weight *int32 `json:"weight,omitempty" azure:"ro"`
12079}
12080
12081// PeerRouteList - List of virtual router peer routes.
12082type PeerRouteList struct {
12083	// List of peer routes.
12084	Value []*PeerRoute `json:"value,omitempty"`
12085}
12086
12087// MarshalJSON implements the json.Marshaller interface for type PeerRouteList.
12088func (p PeerRouteList) MarshalJSON() ([]byte, error) {
12089	objectMap := make(map[string]interface{})
12090	populate(objectMap, "value", p.Value)
12091	return json.Marshal(objectMap)
12092}
12093
12094// PolicySettings - Defines contents of a web application firewall global configuration.
12095type PolicySettings struct {
12096	// Maximum file upload size in Mb for WAF.
12097	FileUploadLimitInMb *int32 `json:"fileUploadLimitInMb,omitempty"`
12098
12099	// Maximum request body size in Kb for WAF.
12100	MaxRequestBodySizeInKb *int32 `json:"maxRequestBodySizeInKb,omitempty"`
12101
12102	// The mode of the policy.
12103	Mode *WebApplicationFirewallMode `json:"mode,omitempty"`
12104
12105	// Whether to allow WAF to check request Body.
12106	RequestBodyCheck *bool `json:"requestBodyCheck,omitempty"`
12107
12108	// The state of the policy.
12109	State *WebApplicationFirewallEnabledState `json:"state,omitempty"`
12110}
12111
12112// PrepareNetworkPoliciesRequest - Details of PrepareNetworkPolicies for Subnet.
12113type PrepareNetworkPoliciesRequest struct {
12114	// A list of NetworkIntentPolicyConfiguration.
12115	NetworkIntentPolicyConfigurations []*NetworkIntentPolicyConfiguration `json:"networkIntentPolicyConfigurations,omitempty"`
12116
12117	// The name of the service for which subnet is being prepared for.
12118	ServiceName *string `json:"serviceName,omitempty"`
12119}
12120
12121// MarshalJSON implements the json.Marshaller interface for type PrepareNetworkPoliciesRequest.
12122func (p PrepareNetworkPoliciesRequest) MarshalJSON() ([]byte, error) {
12123	objectMap := make(map[string]interface{})
12124	populate(objectMap, "networkIntentPolicyConfigurations", p.NetworkIntentPolicyConfigurations)
12125	populate(objectMap, "serviceName", p.ServiceName)
12126	return json.Marshal(objectMap)
12127}
12128
12129// PrivateDNSZoneConfig - PrivateDnsZoneConfig resource.
12130type PrivateDNSZoneConfig struct {
12131	// Name of the resource that is unique within a resource group. This name can be used to access the resource.
12132	Name *string `json:"name,omitempty"`
12133
12134	// Properties of the private dns zone configuration.
12135	Properties *PrivateDNSZonePropertiesFormat `json:"properties,omitempty"`
12136}
12137
12138// PrivateDNSZoneGroup - Private dns zone group resource.
12139type PrivateDNSZoneGroup struct {
12140	SubResource
12141	// Name of the resource that is unique within a resource group. This name can be used to access the resource.
12142	Name *string `json:"name,omitempty"`
12143
12144	// Properties of the private dns zone group.
12145	Properties *PrivateDNSZoneGroupPropertiesFormat `json:"properties,omitempty"`
12146
12147	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
12148	Etag *string `json:"etag,omitempty" azure:"ro"`
12149}
12150
12151// MarshalJSON implements the json.Marshaller interface for type PrivateDNSZoneGroup.
12152func (p PrivateDNSZoneGroup) MarshalJSON() ([]byte, error) {
12153	objectMap := p.SubResource.marshalInternal()
12154	populate(objectMap, "etag", p.Etag)
12155	populate(objectMap, "name", p.Name)
12156	populate(objectMap, "properties", p.Properties)
12157	return json.Marshal(objectMap)
12158}
12159
12160// PrivateDNSZoneGroupListResult - Response for the ListPrivateDnsZoneGroups API service call.
12161type PrivateDNSZoneGroupListResult struct {
12162	// A list of private dns zone group resources in a private endpoint.
12163	Value []*PrivateDNSZoneGroup `json:"value,omitempty"`
12164
12165	// READ-ONLY; The URL to get the next set of results.
12166	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
12167}
12168
12169// MarshalJSON implements the json.Marshaller interface for type PrivateDNSZoneGroupListResult.
12170func (p PrivateDNSZoneGroupListResult) MarshalJSON() ([]byte, error) {
12171	objectMap := make(map[string]interface{})
12172	populate(objectMap, "nextLink", p.NextLink)
12173	populate(objectMap, "value", p.Value)
12174	return json.Marshal(objectMap)
12175}
12176
12177// PrivateDNSZoneGroupPropertiesFormat - Properties of the private dns zone group.
12178type PrivateDNSZoneGroupPropertiesFormat struct {
12179	// A collection of private dns zone configurations of the private dns zone group.
12180	PrivateDNSZoneConfigs []*PrivateDNSZoneConfig `json:"privateDnsZoneConfigs,omitempty"`
12181
12182	// READ-ONLY; The provisioning state of the private dns zone group resource.
12183	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
12184}
12185
12186// MarshalJSON implements the json.Marshaller interface for type PrivateDNSZoneGroupPropertiesFormat.
12187func (p PrivateDNSZoneGroupPropertiesFormat) MarshalJSON() ([]byte, error) {
12188	objectMap := make(map[string]interface{})
12189	populate(objectMap, "privateDnsZoneConfigs", p.PrivateDNSZoneConfigs)
12190	populate(objectMap, "provisioningState", p.ProvisioningState)
12191	return json.Marshal(objectMap)
12192}
12193
12194// PrivateDNSZoneGroupsBeginCreateOrUpdateOptions contains the optional parameters for the PrivateDNSZoneGroups.BeginCreateOrUpdate method.
12195type PrivateDNSZoneGroupsBeginCreateOrUpdateOptions struct {
12196	// placeholder for future optional parameters
12197}
12198
12199// PrivateDNSZoneGroupsBeginDeleteOptions contains the optional parameters for the PrivateDNSZoneGroups.BeginDelete method.
12200type PrivateDNSZoneGroupsBeginDeleteOptions struct {
12201	// placeholder for future optional parameters
12202}
12203
12204// PrivateDNSZoneGroupsGetOptions contains the optional parameters for the PrivateDNSZoneGroups.Get method.
12205type PrivateDNSZoneGroupsGetOptions struct {
12206	// placeholder for future optional parameters
12207}
12208
12209// PrivateDNSZoneGroupsListOptions contains the optional parameters for the PrivateDNSZoneGroups.List method.
12210type PrivateDNSZoneGroupsListOptions struct {
12211	// placeholder for future optional parameters
12212}
12213
12214// PrivateDNSZonePropertiesFormat - Properties of the private dns zone configuration resource.
12215type PrivateDNSZonePropertiesFormat struct {
12216	// The resource id of the private dns zone.
12217	PrivateDNSZoneID *string `json:"privateDnsZoneId,omitempty"`
12218
12219	// READ-ONLY; A collection of information regarding a recordSet, holding information to identify private resources.
12220	RecordSets []*RecordSet `json:"recordSets,omitempty" azure:"ro"`
12221}
12222
12223// MarshalJSON implements the json.Marshaller interface for type PrivateDNSZonePropertiesFormat.
12224func (p PrivateDNSZonePropertiesFormat) MarshalJSON() ([]byte, error) {
12225	objectMap := make(map[string]interface{})
12226	populate(objectMap, "privateDnsZoneId", p.PrivateDNSZoneID)
12227	populate(objectMap, "recordSets", p.RecordSets)
12228	return json.Marshal(objectMap)
12229}
12230
12231// PrivateEndpoint - Private endpoint resource.
12232type PrivateEndpoint struct {
12233	Resource
12234	// The extended location of the load balancer.
12235	ExtendedLocation *ExtendedLocation `json:"extendedLocation,omitempty"`
12236
12237	// Properties of the private endpoint.
12238	Properties *PrivateEndpointProperties `json:"properties,omitempty"`
12239
12240	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
12241	Etag *string `json:"etag,omitempty" azure:"ro"`
12242}
12243
12244// MarshalJSON implements the json.Marshaller interface for type PrivateEndpoint.
12245func (p PrivateEndpoint) MarshalJSON() ([]byte, error) {
12246	objectMap := p.Resource.marshalInternal()
12247	populate(objectMap, "etag", p.Etag)
12248	populate(objectMap, "extendedLocation", p.ExtendedLocation)
12249	populate(objectMap, "properties", p.Properties)
12250	return json.Marshal(objectMap)
12251}
12252
12253// PrivateEndpointConnection resource.
12254type PrivateEndpointConnection struct {
12255	SubResource
12256	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
12257	Name *string `json:"name,omitempty"`
12258
12259	// Properties of the private end point connection.
12260	Properties *PrivateEndpointConnectionProperties `json:"properties,omitempty"`
12261
12262	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
12263	Etag *string `json:"etag,omitempty" azure:"ro"`
12264
12265	// READ-ONLY; The resource type.
12266	Type *string `json:"type,omitempty" azure:"ro"`
12267}
12268
12269// MarshalJSON implements the json.Marshaller interface for type PrivateEndpointConnection.
12270func (p PrivateEndpointConnection) MarshalJSON() ([]byte, error) {
12271	objectMap := p.SubResource.marshalInternal()
12272	populate(objectMap, "etag", p.Etag)
12273	populate(objectMap, "name", p.Name)
12274	populate(objectMap, "properties", p.Properties)
12275	populate(objectMap, "type", p.Type)
12276	return json.Marshal(objectMap)
12277}
12278
12279// PrivateEndpointConnectionListResult - Response for the ListPrivateEndpointConnection API service call.
12280type PrivateEndpointConnectionListResult struct {
12281	// A list of PrivateEndpointConnection resources for a specific private link service.
12282	Value []*PrivateEndpointConnection `json:"value,omitempty"`
12283
12284	// READ-ONLY; The URL to get the next set of results.
12285	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
12286}
12287
12288// MarshalJSON implements the json.Marshaller interface for type PrivateEndpointConnectionListResult.
12289func (p PrivateEndpointConnectionListResult) MarshalJSON() ([]byte, error) {
12290	objectMap := make(map[string]interface{})
12291	populate(objectMap, "nextLink", p.NextLink)
12292	populate(objectMap, "value", p.Value)
12293	return json.Marshal(objectMap)
12294}
12295
12296// PrivateEndpointConnectionProperties - Properties of the PrivateEndpointConnectProperties.
12297type PrivateEndpointConnectionProperties struct {
12298	// A collection of information about the state of the connection between service consumer and provider.
12299	PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
12300
12301	// READ-ONLY; The consumer link id.
12302	LinkIdentifier *string `json:"linkIdentifier,omitempty" azure:"ro"`
12303
12304	// READ-ONLY; The resource of private end point.
12305	PrivateEndpoint *PrivateEndpoint `json:"privateEndpoint,omitempty" azure:"ro"`
12306
12307	// READ-ONLY; The provisioning state of the private endpoint connection resource.
12308	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
12309}
12310
12311// PrivateEndpointListResult - Response for the ListPrivateEndpoints API service call.
12312type PrivateEndpointListResult struct {
12313	// A list of private endpoint resources in a resource group.
12314	Value []*PrivateEndpoint `json:"value,omitempty"`
12315
12316	// READ-ONLY; The URL to get the next set of results.
12317	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
12318}
12319
12320// MarshalJSON implements the json.Marshaller interface for type PrivateEndpointListResult.
12321func (p PrivateEndpointListResult) MarshalJSON() ([]byte, error) {
12322	objectMap := make(map[string]interface{})
12323	populate(objectMap, "nextLink", p.NextLink)
12324	populate(objectMap, "value", p.Value)
12325	return json.Marshal(objectMap)
12326}
12327
12328// PrivateEndpointProperties - Properties of the private endpoint.
12329type PrivateEndpointProperties struct {
12330	// An array of custom dns configurations.
12331	CustomDNSConfigs []*CustomDNSConfigPropertiesFormat `json:"customDnsConfigs,omitempty"`
12332
12333	// A grouping of information about the connection to the remote resource. Used when the network admin does not have access to approve connections to the
12334	// remote resource.
12335	ManualPrivateLinkServiceConnections []*PrivateLinkServiceConnection `json:"manualPrivateLinkServiceConnections,omitempty"`
12336
12337	// A grouping of information about the connection to the remote resource.
12338	PrivateLinkServiceConnections []*PrivateLinkServiceConnection `json:"privateLinkServiceConnections,omitempty"`
12339
12340	// The ID of the subnet from which the private IP will be allocated.
12341	Subnet *Subnet `json:"subnet,omitempty"`
12342
12343	// READ-ONLY; An array of references to the network interfaces created for this private endpoint.
12344	NetworkInterfaces []*NetworkInterface `json:"networkInterfaces,omitempty" azure:"ro"`
12345
12346	// READ-ONLY; The provisioning state of the private endpoint resource.
12347	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
12348}
12349
12350// MarshalJSON implements the json.Marshaller interface for type PrivateEndpointProperties.
12351func (p PrivateEndpointProperties) MarshalJSON() ([]byte, error) {
12352	objectMap := make(map[string]interface{})
12353	populate(objectMap, "customDnsConfigs", p.CustomDNSConfigs)
12354	populate(objectMap, "manualPrivateLinkServiceConnections", p.ManualPrivateLinkServiceConnections)
12355	populate(objectMap, "networkInterfaces", p.NetworkInterfaces)
12356	populate(objectMap, "privateLinkServiceConnections", p.PrivateLinkServiceConnections)
12357	populate(objectMap, "provisioningState", p.ProvisioningState)
12358	populate(objectMap, "subnet", p.Subnet)
12359	return json.Marshal(objectMap)
12360}
12361
12362// PrivateEndpointsBeginCreateOrUpdateOptions contains the optional parameters for the PrivateEndpoints.BeginCreateOrUpdate method.
12363type PrivateEndpointsBeginCreateOrUpdateOptions struct {
12364	// placeholder for future optional parameters
12365}
12366
12367// PrivateEndpointsBeginDeleteOptions contains the optional parameters for the PrivateEndpoints.BeginDelete method.
12368type PrivateEndpointsBeginDeleteOptions struct {
12369	// placeholder for future optional parameters
12370}
12371
12372// PrivateEndpointsGetOptions contains the optional parameters for the PrivateEndpoints.Get method.
12373type PrivateEndpointsGetOptions struct {
12374	// Expands referenced resources.
12375	Expand *string
12376}
12377
12378// PrivateEndpointsListBySubscriptionOptions contains the optional parameters for the PrivateEndpoints.ListBySubscription method.
12379type PrivateEndpointsListBySubscriptionOptions struct {
12380	// placeholder for future optional parameters
12381}
12382
12383// PrivateEndpointsListOptions contains the optional parameters for the PrivateEndpoints.List method.
12384type PrivateEndpointsListOptions struct {
12385	// placeholder for future optional parameters
12386}
12387
12388// PrivateLinkService - Private link service resource.
12389type PrivateLinkService struct {
12390	Resource
12391	// The extended location of the load balancer.
12392	ExtendedLocation *ExtendedLocation `json:"extendedLocation,omitempty"`
12393
12394	// Properties of the private link service.
12395	Properties *PrivateLinkServiceProperties `json:"properties,omitempty"`
12396
12397	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
12398	Etag *string `json:"etag,omitempty" azure:"ro"`
12399}
12400
12401// MarshalJSON implements the json.Marshaller interface for type PrivateLinkService.
12402func (p PrivateLinkService) MarshalJSON() ([]byte, error) {
12403	objectMap := p.Resource.marshalInternal()
12404	populate(objectMap, "etag", p.Etag)
12405	populate(objectMap, "extendedLocation", p.ExtendedLocation)
12406	populate(objectMap, "properties", p.Properties)
12407	return json.Marshal(objectMap)
12408}
12409
12410// PrivateLinkServiceConnection resource.
12411type PrivateLinkServiceConnection struct {
12412	SubResource
12413	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
12414	Name *string `json:"name,omitempty"`
12415
12416	// Properties of the private link service connection.
12417	Properties *PrivateLinkServiceConnectionProperties `json:"properties,omitempty"`
12418
12419	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
12420	Etag *string `json:"etag,omitempty" azure:"ro"`
12421
12422	// READ-ONLY; The resource type.
12423	Type *string `json:"type,omitempty" azure:"ro"`
12424}
12425
12426// MarshalJSON implements the json.Marshaller interface for type PrivateLinkServiceConnection.
12427func (p PrivateLinkServiceConnection) MarshalJSON() ([]byte, error) {
12428	objectMap := p.SubResource.marshalInternal()
12429	populate(objectMap, "etag", p.Etag)
12430	populate(objectMap, "name", p.Name)
12431	populate(objectMap, "properties", p.Properties)
12432	populate(objectMap, "type", p.Type)
12433	return json.Marshal(objectMap)
12434}
12435
12436// PrivateLinkServiceConnectionProperties - Properties of the PrivateLinkServiceConnection.
12437type PrivateLinkServiceConnectionProperties struct {
12438	// The ID(s) of the group(s) obtained from the remote resource that this private endpoint should connect to.
12439	GroupIDs []*string `json:"groupIds,omitempty"`
12440
12441	// A collection of read-only information about the state of the connection to the remote resource.
12442	PrivateLinkServiceConnectionState *PrivateLinkServiceConnectionState `json:"privateLinkServiceConnectionState,omitempty"`
12443
12444	// The resource id of private link service.
12445	PrivateLinkServiceID *string `json:"privateLinkServiceId,omitempty"`
12446
12447	// A message passed to the owner of the remote resource with this connection request. Restricted to 140 chars.
12448	RequestMessage *string `json:"requestMessage,omitempty"`
12449
12450	// READ-ONLY; The provisioning state of the private link service connection resource.
12451	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
12452}
12453
12454// MarshalJSON implements the json.Marshaller interface for type PrivateLinkServiceConnectionProperties.
12455func (p PrivateLinkServiceConnectionProperties) MarshalJSON() ([]byte, error) {
12456	objectMap := make(map[string]interface{})
12457	populate(objectMap, "groupIds", p.GroupIDs)
12458	populate(objectMap, "privateLinkServiceConnectionState", p.PrivateLinkServiceConnectionState)
12459	populate(objectMap, "privateLinkServiceId", p.PrivateLinkServiceID)
12460	populate(objectMap, "provisioningState", p.ProvisioningState)
12461	populate(objectMap, "requestMessage", p.RequestMessage)
12462	return json.Marshal(objectMap)
12463}
12464
12465// PrivateLinkServiceConnectionState - A collection of information about the state of the connection between service consumer and provider.
12466type PrivateLinkServiceConnectionState struct {
12467	// A message indicating if changes on the service provider require any updates on the consumer.
12468	ActionsRequired *string `json:"actionsRequired,omitempty"`
12469
12470	// The reason for approval/rejection of the connection.
12471	Description *string `json:"description,omitempty"`
12472
12473	// Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service.
12474	Status *string `json:"status,omitempty"`
12475}
12476
12477// PrivateLinkServiceIPConfiguration - The private link service ip configuration.
12478type PrivateLinkServiceIPConfiguration struct {
12479	SubResource
12480	// The name of private link service ip configuration.
12481	Name *string `json:"name,omitempty"`
12482
12483	// Properties of the private link service ip configuration.
12484	Properties *PrivateLinkServiceIPConfigurationProperties `json:"properties,omitempty"`
12485
12486	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
12487	Etag *string `json:"etag,omitempty" azure:"ro"`
12488
12489	// READ-ONLY; The resource type.
12490	Type *string `json:"type,omitempty" azure:"ro"`
12491}
12492
12493// MarshalJSON implements the json.Marshaller interface for type PrivateLinkServiceIPConfiguration.
12494func (p PrivateLinkServiceIPConfiguration) MarshalJSON() ([]byte, error) {
12495	objectMap := p.SubResource.marshalInternal()
12496	populate(objectMap, "etag", p.Etag)
12497	populate(objectMap, "name", p.Name)
12498	populate(objectMap, "properties", p.Properties)
12499	populate(objectMap, "type", p.Type)
12500	return json.Marshal(objectMap)
12501}
12502
12503// PrivateLinkServiceIPConfigurationProperties - Properties of private link service IP configuration.
12504type PrivateLinkServiceIPConfigurationProperties struct {
12505	// Whether the ip configuration is primary or not.
12506	Primary *bool `json:"primary,omitempty"`
12507
12508	// The private IP address of the IP configuration.
12509	PrivateIPAddress *string `json:"privateIPAddress,omitempty"`
12510
12511	// Whether the specific IP configuration is IPv4 or IPv6. Default is IPv4.
12512	PrivateIPAddressVersion *IPVersion `json:"privateIPAddressVersion,omitempty"`
12513
12514	// The private IP address allocation method.
12515	PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"`
12516
12517	// The reference to the subnet resource.
12518	Subnet *Subnet `json:"subnet,omitempty"`
12519
12520	// READ-ONLY; The provisioning state of the private link service IP configuration resource.
12521	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
12522}
12523
12524// PrivateLinkServiceListResult - Response for the ListPrivateLinkService API service call.
12525type PrivateLinkServiceListResult struct {
12526	// A list of PrivateLinkService resources in a resource group.
12527	Value []*PrivateLinkService `json:"value,omitempty"`
12528
12529	// READ-ONLY; The URL to get the next set of results.
12530	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
12531}
12532
12533// MarshalJSON implements the json.Marshaller interface for type PrivateLinkServiceListResult.
12534func (p PrivateLinkServiceListResult) MarshalJSON() ([]byte, error) {
12535	objectMap := make(map[string]interface{})
12536	populate(objectMap, "nextLink", p.NextLink)
12537	populate(objectMap, "value", p.Value)
12538	return json.Marshal(objectMap)
12539}
12540
12541// PrivateLinkServiceProperties - Properties of the private link service.
12542type PrivateLinkServiceProperties struct {
12543	// The auto-approval list of the private link service.
12544	AutoApproval *PrivateLinkServicePropertiesAutoApproval `json:"autoApproval,omitempty"`
12545
12546	// Whether the private link service is enabled for proxy protocol or not.
12547	EnableProxyProtocol *bool `json:"enableProxyProtocol,omitempty"`
12548
12549	// The list of Fqdn.
12550	Fqdns []*string `json:"fqdns,omitempty"`
12551
12552	// An array of private link service IP configurations.
12553	IPConfigurations []*PrivateLinkServiceIPConfiguration `json:"ipConfigurations,omitempty"`
12554
12555	// An array of references to the load balancer IP configurations.
12556	LoadBalancerFrontendIPConfigurations []*FrontendIPConfiguration `json:"loadBalancerFrontendIpConfigurations,omitempty"`
12557
12558	// The visibility list of the private link service.
12559	Visibility *PrivateLinkServicePropertiesVisibility `json:"visibility,omitempty"`
12560
12561	// READ-ONLY; The alias of the private link service.
12562	Alias *string `json:"alias,omitempty" azure:"ro"`
12563
12564	// READ-ONLY; An array of references to the network interfaces created for this private link service.
12565	NetworkInterfaces []*NetworkInterface `json:"networkInterfaces,omitempty" azure:"ro"`
12566
12567	// READ-ONLY; An array of list about connections to the private endpoint.
12568	PrivateEndpointConnections []*PrivateEndpointConnection `json:"privateEndpointConnections,omitempty" azure:"ro"`
12569
12570	// READ-ONLY; The provisioning state of the private link service resource.
12571	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
12572}
12573
12574// MarshalJSON implements the json.Marshaller interface for type PrivateLinkServiceProperties.
12575func (p PrivateLinkServiceProperties) MarshalJSON() ([]byte, error) {
12576	objectMap := make(map[string]interface{})
12577	populate(objectMap, "alias", p.Alias)
12578	populate(objectMap, "autoApproval", p.AutoApproval)
12579	populate(objectMap, "enableProxyProtocol", p.EnableProxyProtocol)
12580	populate(objectMap, "fqdns", p.Fqdns)
12581	populate(objectMap, "ipConfigurations", p.IPConfigurations)
12582	populate(objectMap, "loadBalancerFrontendIpConfigurations", p.LoadBalancerFrontendIPConfigurations)
12583	populate(objectMap, "networkInterfaces", p.NetworkInterfaces)
12584	populate(objectMap, "privateEndpointConnections", p.PrivateEndpointConnections)
12585	populate(objectMap, "provisioningState", p.ProvisioningState)
12586	populate(objectMap, "visibility", p.Visibility)
12587	return json.Marshal(objectMap)
12588}
12589
12590// PrivateLinkServicePropertiesAutoApproval - The auto-approval list of the private link service.
12591type PrivateLinkServicePropertiesAutoApproval struct {
12592	ResourceSet
12593}
12594
12595// PrivateLinkServicePropertiesVisibility - The visibility list of the private link service.
12596type PrivateLinkServicePropertiesVisibility struct {
12597	ResourceSet
12598}
12599
12600// PrivateLinkServiceVisibility - Response for the CheckPrivateLinkServiceVisibility API service call.
12601type PrivateLinkServiceVisibility struct {
12602	// Private Link Service Visibility (True/False).
12603	Visible *bool `json:"visible,omitempty"`
12604}
12605
12606// PrivateLinkServicesBeginCheckPrivateLinkServiceVisibilityByResourceGroupOptions contains the optional parameters for the PrivateLinkServices.BeginCheckPrivateLinkServiceVisibilityByResourceGroup
12607// method.
12608type PrivateLinkServicesBeginCheckPrivateLinkServiceVisibilityByResourceGroupOptions struct {
12609	// placeholder for future optional parameters
12610}
12611
12612// PrivateLinkServicesBeginCheckPrivateLinkServiceVisibilityOptions contains the optional parameters for the PrivateLinkServices.BeginCheckPrivateLinkServiceVisibility
12613// method.
12614type PrivateLinkServicesBeginCheckPrivateLinkServiceVisibilityOptions struct {
12615	// placeholder for future optional parameters
12616}
12617
12618// PrivateLinkServicesBeginCreateOrUpdateOptions contains the optional parameters for the PrivateLinkServices.BeginCreateOrUpdate method.
12619type PrivateLinkServicesBeginCreateOrUpdateOptions struct {
12620	// placeholder for future optional parameters
12621}
12622
12623// PrivateLinkServicesBeginDeleteOptions contains the optional parameters for the PrivateLinkServices.BeginDelete method.
12624type PrivateLinkServicesBeginDeleteOptions struct {
12625	// placeholder for future optional parameters
12626}
12627
12628// PrivateLinkServicesBeginDeletePrivateEndpointConnectionOptions contains the optional parameters for the PrivateLinkServices.BeginDeletePrivateEndpointConnection
12629// method.
12630type PrivateLinkServicesBeginDeletePrivateEndpointConnectionOptions struct {
12631	// placeholder for future optional parameters
12632}
12633
12634// PrivateLinkServicesGetOptions contains the optional parameters for the PrivateLinkServices.Get method.
12635type PrivateLinkServicesGetOptions struct {
12636	// Expands referenced resources.
12637	Expand *string
12638}
12639
12640// PrivateLinkServicesGetPrivateEndpointConnectionOptions contains the optional parameters for the PrivateLinkServices.GetPrivateEndpointConnection method.
12641type PrivateLinkServicesGetPrivateEndpointConnectionOptions struct {
12642	// Expands referenced resources.
12643	Expand *string
12644}
12645
12646// PrivateLinkServicesListAutoApprovedPrivateLinkServicesByResourceGroupOptions contains the optional parameters for the PrivateLinkServices.ListAutoApprovedPrivateLinkServicesByResourceGroup
12647// method.
12648type PrivateLinkServicesListAutoApprovedPrivateLinkServicesByResourceGroupOptions struct {
12649	// placeholder for future optional parameters
12650}
12651
12652// PrivateLinkServicesListAutoApprovedPrivateLinkServicesOptions contains the optional parameters for the PrivateLinkServices.ListAutoApprovedPrivateLinkServices
12653// method.
12654type PrivateLinkServicesListAutoApprovedPrivateLinkServicesOptions struct {
12655	// placeholder for future optional parameters
12656}
12657
12658// PrivateLinkServicesListBySubscriptionOptions contains the optional parameters for the PrivateLinkServices.ListBySubscription method.
12659type PrivateLinkServicesListBySubscriptionOptions struct {
12660	// placeholder for future optional parameters
12661}
12662
12663// PrivateLinkServicesListOptions contains the optional parameters for the PrivateLinkServices.List method.
12664type PrivateLinkServicesListOptions struct {
12665	// placeholder for future optional parameters
12666}
12667
12668// PrivateLinkServicesListPrivateEndpointConnectionsOptions contains the optional parameters for the PrivateLinkServices.ListPrivateEndpointConnections
12669// method.
12670type PrivateLinkServicesListPrivateEndpointConnectionsOptions struct {
12671	// placeholder for future optional parameters
12672}
12673
12674// PrivateLinkServicesUpdatePrivateEndpointConnectionOptions contains the optional parameters for the PrivateLinkServices.UpdatePrivateEndpointConnection
12675// method.
12676type PrivateLinkServicesUpdatePrivateEndpointConnectionOptions struct {
12677	// placeholder for future optional parameters
12678}
12679
12680// Probe - A load balancer probe.
12681type Probe struct {
12682	SubResource
12683	// The name of the resource that is unique within the set of probes used by the load balancer. This name can be used to access the resource.
12684	Name *string `json:"name,omitempty"`
12685
12686	// Properties of load balancer probe.
12687	Properties *ProbePropertiesFormat `json:"properties,omitempty"`
12688
12689	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
12690	Etag *string `json:"etag,omitempty" azure:"ro"`
12691
12692	// READ-ONLY; Type of the resource.
12693	Type *string `json:"type,omitempty" azure:"ro"`
12694}
12695
12696// MarshalJSON implements the json.Marshaller interface for type Probe.
12697func (p Probe) MarshalJSON() ([]byte, error) {
12698	objectMap := p.SubResource.marshalInternal()
12699	populate(objectMap, "etag", p.Etag)
12700	populate(objectMap, "name", p.Name)
12701	populate(objectMap, "properties", p.Properties)
12702	populate(objectMap, "type", p.Type)
12703	return json.Marshal(objectMap)
12704}
12705
12706// ProbePropertiesFormat - Load balancer probe resource.
12707type ProbePropertiesFormat struct {
12708	// REQUIRED; The port for communicating the probe. Possible values range from 1 to 65535, inclusive.
12709	Port *int32 `json:"port,omitempty"`
12710
12711	// REQUIRED; The protocol of the end point. If 'Tcp' is specified, a received ACK is required for the probe to be successful. If 'Http' or 'Https' is specified,
12712	// a 200 OK response from the specifies URI is required
12713	// for the probe to be successful.
12714	Protocol *ProbeProtocol `json:"protocol,omitempty"`
12715
12716	// The interval, in seconds, for how frequently to probe the endpoint for health status. Typically, the interval is slightly less than half the allocated
12717	// timeout period (in seconds) which allows two full
12718	// probes before taking the instance out of rotation. The default value is 15, the minimum value is 5.
12719	IntervalInSeconds *int32 `json:"intervalInSeconds,omitempty"`
12720
12721	// The number of probes where if no response, will result in stopping further traffic from being delivered to the endpoint. This values allows endpoints
12722	// to be taken out of rotation faster or slower than
12723	// the typical times used in Azure.
12724	NumberOfProbes *int32 `json:"numberOfProbes,omitempty"`
12725
12726	// The URI used for requesting health status from the VM. Path is required if a protocol is set to http. Otherwise, it is not allowed. There is no default
12727	// value.
12728	RequestPath *string `json:"requestPath,omitempty"`
12729
12730	// READ-ONLY; The load balancer rules that use this probe.
12731	LoadBalancingRules []*SubResource `json:"loadBalancingRules,omitempty" azure:"ro"`
12732
12733	// READ-ONLY; The provisioning state of the probe resource.
12734	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
12735}
12736
12737// MarshalJSON implements the json.Marshaller interface for type ProbePropertiesFormat.
12738func (p ProbePropertiesFormat) MarshalJSON() ([]byte, error) {
12739	objectMap := make(map[string]interface{})
12740	populate(objectMap, "intervalInSeconds", p.IntervalInSeconds)
12741	populate(objectMap, "loadBalancingRules", p.LoadBalancingRules)
12742	populate(objectMap, "numberOfProbes", p.NumberOfProbes)
12743	populate(objectMap, "port", p.Port)
12744	populate(objectMap, "protocol", p.Protocol)
12745	populate(objectMap, "provisioningState", p.ProvisioningState)
12746	populate(objectMap, "requestPath", p.RequestPath)
12747	return json.Marshal(objectMap)
12748}
12749
12750// PropagatedRouteTable - The list of RouteTables to advertise the routes to.
12751type PropagatedRouteTable struct {
12752	// The list of resource ids of all the RouteTables.
12753	IDs []*SubResource `json:"ids,omitempty"`
12754
12755	// The list of labels.
12756	Labels []*string `json:"labels,omitempty"`
12757}
12758
12759// MarshalJSON implements the json.Marshaller interface for type PropagatedRouteTable.
12760func (p PropagatedRouteTable) MarshalJSON() ([]byte, error) {
12761	objectMap := make(map[string]interface{})
12762	populate(objectMap, "ids", p.IDs)
12763	populate(objectMap, "labels", p.Labels)
12764	return json.Marshal(objectMap)
12765}
12766
12767// ProtocolConfiguration - Configuration of the protocol.
12768type ProtocolConfiguration struct {
12769	// HTTP configuration of the connectivity check.
12770	HTTPConfiguration *HTTPConfiguration `json:"HTTPConfiguration,omitempty"`
12771}
12772
12773// ProtocolCustomSettingsFormat - DDoS custom policy properties.
12774type ProtocolCustomSettingsFormat struct {
12775	// The protocol for which the DDoS protection policy is being customized.
12776	Protocol *DdosCustomPolicyProtocol `json:"protocol,omitempty"`
12777
12778	// The customized DDoS protection source rate.
12779	SourceRateOverride *string `json:"sourceRateOverride,omitempty"`
12780
12781	// The customized DDoS protection trigger rate.
12782	TriggerRateOverride *string `json:"triggerRateOverride,omitempty"`
12783
12784	// The customized DDoS protection trigger rate sensitivity degrees. High: Trigger rate set with most sensitivity w.r.t. normal traffic. Default: Trigger
12785	// rate set with moderate sensitivity w.r.t. normal
12786	// traffic. Low: Trigger rate set with less sensitivity w.r.t. normal traffic. Relaxed: Trigger rate set with least sensitivity w.r.t. normal traffic.
12787	TriggerSensitivityOverride *DdosCustomPolicyTriggerSensitivityOverride `json:"triggerSensitivityOverride,omitempty"`
12788}
12789
12790// PublicIPAddress - Public IP address resource.
12791type PublicIPAddress struct {
12792	Resource
12793	// The extended location of the public ip address.
12794	ExtendedLocation *ExtendedLocation `json:"extendedLocation,omitempty"`
12795
12796	// Public IP address properties.
12797	Properties *PublicIPAddressPropertiesFormat `json:"properties,omitempty"`
12798
12799	// The public IP address SKU.
12800	SKU *PublicIPAddressSKU `json:"sku,omitempty"`
12801
12802	// A list of availability zones denoting the IP allocated for the resource needs to come from.
12803	Zones []*string `json:"zones,omitempty"`
12804
12805	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
12806	Etag *string `json:"etag,omitempty" azure:"ro"`
12807}
12808
12809// MarshalJSON implements the json.Marshaller interface for type PublicIPAddress.
12810func (p PublicIPAddress) MarshalJSON() ([]byte, error) {
12811	objectMap := p.Resource.marshalInternal()
12812	populate(objectMap, "etag", p.Etag)
12813	populate(objectMap, "extendedLocation", p.ExtendedLocation)
12814	populate(objectMap, "properties", p.Properties)
12815	populate(objectMap, "sku", p.SKU)
12816	populate(objectMap, "zones", p.Zones)
12817	return json.Marshal(objectMap)
12818}
12819
12820// PublicIPAddressDNSSettings - Contains FQDN of the DNS record associated with the public IP address.
12821type PublicIPAddressDNSSettings struct {
12822	// The domain name label. The concatenation of the domain name label and the regionalized DNS zone make up the fully qualified domain name associated with
12823	// the public IP address. If a domain name label is
12824	// specified, an A DNS record is created for the public IP in the Microsoft Azure DNS system.
12825	DomainNameLabel *string `json:"domainNameLabel,omitempty"`
12826
12827	// The Fully Qualified Domain Name of the A DNS record associated with the public IP. This is the concatenation of the domainNameLabel and the regionalized
12828	// DNS zone.
12829	Fqdn *string `json:"fqdn,omitempty"`
12830
12831	// The reverse FQDN. A user-visible, fully qualified domain name that resolves to this public IP address. If the reverseFqdn is specified, then a PTR DNS
12832	// record is created pointing from the IP address in
12833	// the in-addr.arpa domain to the reverse FQDN.
12834	ReverseFqdn *string `json:"reverseFqdn,omitempty"`
12835}
12836
12837// PublicIPAddressListResult - Response for ListPublicIpAddresses API service call.
12838type PublicIPAddressListResult struct {
12839	// The URL to get the next set of results.
12840	NextLink *string `json:"nextLink,omitempty"`
12841
12842	// A list of public IP addresses that exists in a resource group.
12843	Value []*PublicIPAddress `json:"value,omitempty"`
12844}
12845
12846// MarshalJSON implements the json.Marshaller interface for type PublicIPAddressListResult.
12847func (p PublicIPAddressListResult) MarshalJSON() ([]byte, error) {
12848	objectMap := make(map[string]interface{})
12849	populate(objectMap, "nextLink", p.NextLink)
12850	populate(objectMap, "value", p.Value)
12851	return json.Marshal(objectMap)
12852}
12853
12854// PublicIPAddressPropertiesFormat - Public IP address properties.
12855type PublicIPAddressPropertiesFormat struct {
12856	// The FQDN of the DNS record associated with the public IP address.
12857	DNSSettings *PublicIPAddressDNSSettings `json:"dnsSettings,omitempty"`
12858
12859	// The DDoS protection custom policy associated with the public IP address.
12860	DdosSettings *DdosSettings `json:"ddosSettings,omitempty"`
12861
12862	// Specify what happens to the public IP address when the VM using it is deleted
12863	DeleteOption *DeleteOptions `json:"deleteOption,omitempty"`
12864
12865	// The IP address associated with the public IP address resource.
12866	IPAddress *string `json:"ipAddress,omitempty"`
12867
12868	// The list of tags associated with the public IP address.
12869	IPTags []*IPTag `json:"ipTags,omitempty"`
12870
12871	// The idle timeout of the public IP address.
12872	IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"`
12873
12874	// The linked public IP address of the public IP address resource.
12875	LinkedPublicIPAddress *PublicIPAddress `json:"linkedPublicIPAddress,omitempty"`
12876
12877	// Migration phase of Public IP Address.
12878	MigrationPhase *PublicIPAddressMigrationPhase `json:"migrationPhase,omitempty"`
12879
12880	// The NatGateway for the Public IP address.
12881	NatGateway *NatGateway `json:"natGateway,omitempty"`
12882
12883	// The public IP address version.
12884	PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"`
12885
12886	// The public IP address allocation method.
12887	PublicIPAllocationMethod *IPAllocationMethod `json:"publicIPAllocationMethod,omitempty"`
12888
12889	// The Public IP Prefix this Public IP Address should be allocated from.
12890	PublicIPPrefix *SubResource `json:"publicIPPrefix,omitempty"`
12891
12892	// The service public IP address of the public IP address resource.
12893	ServicePublicIPAddress *PublicIPAddress `json:"servicePublicIPAddress,omitempty"`
12894
12895	// READ-ONLY; The IP configuration associated with the public IP address.
12896	IPConfiguration *IPConfiguration `json:"ipConfiguration,omitempty" azure:"ro"`
12897
12898	// READ-ONLY; The provisioning state of the public IP address resource.
12899	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
12900
12901	// READ-ONLY; The resource GUID property of the public IP address resource.
12902	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
12903}
12904
12905// MarshalJSON implements the json.Marshaller interface for type PublicIPAddressPropertiesFormat.
12906func (p PublicIPAddressPropertiesFormat) MarshalJSON() ([]byte, error) {
12907	objectMap := make(map[string]interface{})
12908	populate(objectMap, "dnsSettings", p.DNSSettings)
12909	populate(objectMap, "ddosSettings", p.DdosSettings)
12910	populate(objectMap, "deleteOption", p.DeleteOption)
12911	populate(objectMap, "ipAddress", p.IPAddress)
12912	populate(objectMap, "ipConfiguration", p.IPConfiguration)
12913	populate(objectMap, "ipTags", p.IPTags)
12914	populate(objectMap, "idleTimeoutInMinutes", p.IdleTimeoutInMinutes)
12915	populate(objectMap, "linkedPublicIPAddress", p.LinkedPublicIPAddress)
12916	populate(objectMap, "migrationPhase", p.MigrationPhase)
12917	populate(objectMap, "natGateway", p.NatGateway)
12918	populate(objectMap, "provisioningState", p.ProvisioningState)
12919	populate(objectMap, "publicIPAddressVersion", p.PublicIPAddressVersion)
12920	populate(objectMap, "publicIPAllocationMethod", p.PublicIPAllocationMethod)
12921	populate(objectMap, "publicIPPrefix", p.PublicIPPrefix)
12922	populate(objectMap, "resourceGuid", p.ResourceGUID)
12923	populate(objectMap, "servicePublicIPAddress", p.ServicePublicIPAddress)
12924	return json.Marshal(objectMap)
12925}
12926
12927// PublicIPAddressSKU - SKU of a public IP address.
12928type PublicIPAddressSKU struct {
12929	// Name of a public IP address SKU.
12930	Name *PublicIPAddressSKUName `json:"name,omitempty"`
12931
12932	// Tier of a public IP address SKU.
12933	Tier *PublicIPAddressSKUTier `json:"tier,omitempty"`
12934}
12935
12936// PublicIPAddressesBeginCreateOrUpdateOptions contains the optional parameters for the PublicIPAddresses.BeginCreateOrUpdate method.
12937type PublicIPAddressesBeginCreateOrUpdateOptions struct {
12938	// placeholder for future optional parameters
12939}
12940
12941// PublicIPAddressesBeginDeleteOptions contains the optional parameters for the PublicIPAddresses.BeginDelete method.
12942type PublicIPAddressesBeginDeleteOptions struct {
12943	// placeholder for future optional parameters
12944}
12945
12946// PublicIPAddressesGetCloudServicePublicIPAddressOptions contains the optional parameters for the PublicIPAddresses.GetCloudServicePublicIPAddress method.
12947type PublicIPAddressesGetCloudServicePublicIPAddressOptions struct {
12948	// Expands referenced resources.
12949	Expand *string
12950}
12951
12952// PublicIPAddressesGetOptions contains the optional parameters for the PublicIPAddresses.Get method.
12953type PublicIPAddressesGetOptions struct {
12954	// Expands referenced resources.
12955	Expand *string
12956}
12957
12958// PublicIPAddressesGetVirtualMachineScaleSetPublicIPAddressOptions contains the optional parameters for the PublicIPAddresses.GetVirtualMachineScaleSetPublicIPAddress
12959// method.
12960type PublicIPAddressesGetVirtualMachineScaleSetPublicIPAddressOptions struct {
12961	// Expands referenced resources.
12962	Expand *string
12963}
12964
12965// PublicIPAddressesListAllOptions contains the optional parameters for the PublicIPAddresses.ListAll method.
12966type PublicIPAddressesListAllOptions struct {
12967	// placeholder for future optional parameters
12968}
12969
12970// PublicIPAddressesListCloudServicePublicIPAddressesOptions contains the optional parameters for the PublicIPAddresses.ListCloudServicePublicIPAddresses
12971// method.
12972type PublicIPAddressesListCloudServicePublicIPAddressesOptions struct {
12973	// placeholder for future optional parameters
12974}
12975
12976// PublicIPAddressesListCloudServiceRoleInstancePublicIPAddressesOptions contains the optional parameters for the PublicIPAddresses.ListCloudServiceRoleInstancePublicIPAddresses
12977// method.
12978type PublicIPAddressesListCloudServiceRoleInstancePublicIPAddressesOptions struct {
12979	// placeholder for future optional parameters
12980}
12981
12982// PublicIPAddressesListOptions contains the optional parameters for the PublicIPAddresses.List method.
12983type PublicIPAddressesListOptions struct {
12984	// placeholder for future optional parameters
12985}
12986
12987// PublicIPAddressesListVirtualMachineScaleSetPublicIPAddressesOptions contains the optional parameters for the PublicIPAddresses.ListVirtualMachineScaleSetPublicIPAddresses
12988// method.
12989type PublicIPAddressesListVirtualMachineScaleSetPublicIPAddressesOptions struct {
12990	// placeholder for future optional parameters
12991}
12992
12993// PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesOptions contains the optional parameters for the PublicIPAddresses.ListVirtualMachineScaleSetVMPublicIPAddresses
12994// method.
12995type PublicIPAddressesListVirtualMachineScaleSetVMPublicIPAddressesOptions struct {
12996	// placeholder for future optional parameters
12997}
12998
12999// PublicIPAddressesUpdateTagsOptions contains the optional parameters for the PublicIPAddresses.UpdateTags method.
13000type PublicIPAddressesUpdateTagsOptions struct {
13001	// placeholder for future optional parameters
13002}
13003
13004// PublicIPPrefix - Public IP prefix resource.
13005type PublicIPPrefix struct {
13006	Resource
13007	// The extended location of the public ip address.
13008	ExtendedLocation *ExtendedLocation `json:"extendedLocation,omitempty"`
13009
13010	// Public IP prefix properties.
13011	Properties *PublicIPPrefixPropertiesFormat `json:"properties,omitempty"`
13012
13013	// The public IP prefix SKU.
13014	SKU *PublicIPPrefixSKU `json:"sku,omitempty"`
13015
13016	// A list of availability zones denoting the IP allocated for the resource needs to come from.
13017	Zones []*string `json:"zones,omitempty"`
13018
13019	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
13020	Etag *string `json:"etag,omitempty" azure:"ro"`
13021}
13022
13023// MarshalJSON implements the json.Marshaller interface for type PublicIPPrefix.
13024func (p PublicIPPrefix) MarshalJSON() ([]byte, error) {
13025	objectMap := p.Resource.marshalInternal()
13026	populate(objectMap, "etag", p.Etag)
13027	populate(objectMap, "extendedLocation", p.ExtendedLocation)
13028	populate(objectMap, "properties", p.Properties)
13029	populate(objectMap, "sku", p.SKU)
13030	populate(objectMap, "zones", p.Zones)
13031	return json.Marshal(objectMap)
13032}
13033
13034// PublicIPPrefixListResult - Response for ListPublicIpPrefixes API service call.
13035type PublicIPPrefixListResult struct {
13036	// The URL to get the next set of results.
13037	NextLink *string `json:"nextLink,omitempty"`
13038
13039	// A list of public IP prefixes that exists in a resource group.
13040	Value []*PublicIPPrefix `json:"value,omitempty"`
13041}
13042
13043// MarshalJSON implements the json.Marshaller interface for type PublicIPPrefixListResult.
13044func (p PublicIPPrefixListResult) MarshalJSON() ([]byte, error) {
13045	objectMap := make(map[string]interface{})
13046	populate(objectMap, "nextLink", p.NextLink)
13047	populate(objectMap, "value", p.Value)
13048	return json.Marshal(objectMap)
13049}
13050
13051// PublicIPPrefixPropertiesFormat - Public IP prefix properties.
13052type PublicIPPrefixPropertiesFormat struct {
13053	// The customIpPrefix that this prefix is associated with.
13054	CustomIPPrefix *SubResource `json:"customIPPrefix,omitempty"`
13055
13056	// The list of tags associated with the public IP prefix.
13057	IPTags []*IPTag `json:"ipTags,omitempty"`
13058
13059	// NatGateway of Public IP Prefix.
13060	NatGateway *NatGateway `json:"natGateway,omitempty"`
13061
13062	// The Length of the Public IP Prefix.
13063	PrefixLength *int32 `json:"prefixLength,omitempty"`
13064
13065	// The public IP address version.
13066	PublicIPAddressVersion *IPVersion `json:"publicIPAddressVersion,omitempty"`
13067
13068	// READ-ONLY; The allocated Prefix.
13069	IPPrefix *string `json:"ipPrefix,omitempty" azure:"ro"`
13070
13071	// READ-ONLY; The reference to load balancer frontend IP configuration associated with the public IP prefix.
13072	LoadBalancerFrontendIPConfiguration *SubResource `json:"loadBalancerFrontendIpConfiguration,omitempty" azure:"ro"`
13073
13074	// READ-ONLY; The provisioning state of the public IP prefix resource.
13075	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
13076
13077	// READ-ONLY; The list of all referenced PublicIPAddresses.
13078	PublicIPAddresses []*ReferencedPublicIPAddress `json:"publicIPAddresses,omitempty" azure:"ro"`
13079
13080	// READ-ONLY; The resource GUID property of the public IP prefix resource.
13081	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
13082}
13083
13084// MarshalJSON implements the json.Marshaller interface for type PublicIPPrefixPropertiesFormat.
13085func (p PublicIPPrefixPropertiesFormat) MarshalJSON() ([]byte, error) {
13086	objectMap := make(map[string]interface{})
13087	populate(objectMap, "customIPPrefix", p.CustomIPPrefix)
13088	populate(objectMap, "ipPrefix", p.IPPrefix)
13089	populate(objectMap, "ipTags", p.IPTags)
13090	populate(objectMap, "loadBalancerFrontendIpConfiguration", p.LoadBalancerFrontendIPConfiguration)
13091	populate(objectMap, "natGateway", p.NatGateway)
13092	populate(objectMap, "prefixLength", p.PrefixLength)
13093	populate(objectMap, "provisioningState", p.ProvisioningState)
13094	populate(objectMap, "publicIPAddressVersion", p.PublicIPAddressVersion)
13095	populate(objectMap, "publicIPAddresses", p.PublicIPAddresses)
13096	populate(objectMap, "resourceGuid", p.ResourceGUID)
13097	return json.Marshal(objectMap)
13098}
13099
13100// PublicIPPrefixSKU - SKU of a public IP prefix.
13101type PublicIPPrefixSKU struct {
13102	// Name of a public IP prefix SKU.
13103	Name *PublicIPPrefixSKUName `json:"name,omitempty"`
13104
13105	// Tier of a public IP prefix SKU.
13106	Tier *PublicIPPrefixSKUTier `json:"tier,omitempty"`
13107}
13108
13109// PublicIPPrefixesBeginCreateOrUpdateOptions contains the optional parameters for the PublicIPPrefixes.BeginCreateOrUpdate method.
13110type PublicIPPrefixesBeginCreateOrUpdateOptions struct {
13111	// placeholder for future optional parameters
13112}
13113
13114// PublicIPPrefixesBeginDeleteOptions contains the optional parameters for the PublicIPPrefixes.BeginDelete method.
13115type PublicIPPrefixesBeginDeleteOptions struct {
13116	// placeholder for future optional parameters
13117}
13118
13119// PublicIPPrefixesGetOptions contains the optional parameters for the PublicIPPrefixes.Get method.
13120type PublicIPPrefixesGetOptions struct {
13121	// Expands referenced resources.
13122	Expand *string
13123}
13124
13125// PublicIPPrefixesListAllOptions contains the optional parameters for the PublicIPPrefixes.ListAll method.
13126type PublicIPPrefixesListAllOptions struct {
13127	// placeholder for future optional parameters
13128}
13129
13130// PublicIPPrefixesListOptions contains the optional parameters for the PublicIPPrefixes.List method.
13131type PublicIPPrefixesListOptions struct {
13132	// placeholder for future optional parameters
13133}
13134
13135// PublicIPPrefixesUpdateTagsOptions contains the optional parameters for the PublicIPPrefixes.UpdateTags method.
13136type PublicIPPrefixesUpdateTagsOptions struct {
13137	// placeholder for future optional parameters
13138}
13139
13140// QosIPRange - Qos Traffic Profiler IP Range properties.
13141type QosIPRange struct {
13142	// End IP Address.
13143	EndIP *string `json:"endIP,omitempty"`
13144
13145	// Start IP Address.
13146	StartIP *string `json:"startIP,omitempty"`
13147}
13148
13149// QosPortRange - Qos Traffic Profiler Port range properties.
13150type QosPortRange struct {
13151	// Qos Port Range end.
13152	End *int32 `json:"end,omitempty"`
13153
13154	// Qos Port Range start.
13155	Start *int32 `json:"start,omitempty"`
13156}
13157
13158// QueryTroubleshootingParameters - Parameters that define the resource to query the troubleshooting result.
13159type QueryTroubleshootingParameters struct {
13160	// REQUIRED; The target resource ID to query the troubleshooting result.
13161	TargetResourceID *string `json:"targetResourceId,omitempty"`
13162}
13163
13164// RadiusServer - Radius Server Settings.
13165type RadiusServer struct {
13166	// REQUIRED; The address of this radius server.
13167	RadiusServerAddress *string `json:"radiusServerAddress,omitempty"`
13168
13169	// The initial score assigned to this radius server.
13170	RadiusServerScore *int64 `json:"radiusServerScore,omitempty"`
13171
13172	// The secret used for this radius server.
13173	RadiusServerSecret *string `json:"radiusServerSecret,omitempty"`
13174}
13175
13176// RecordSet - A collective group of information about the record set information.
13177type RecordSet struct {
13178	// Fqdn that resolves to private endpoint ip address.
13179	Fqdn *string `json:"fqdn,omitempty"`
13180
13181	// The private ip address of the private endpoint.
13182	IPAddresses []*string `json:"ipAddresses,omitempty"`
13183
13184	// Recordset name.
13185	RecordSetName *string `json:"recordSetName,omitempty"`
13186
13187	// Resource record type.
13188	RecordType *string `json:"recordType,omitempty"`
13189
13190	// Recordset time to live.
13191	TTL *int32 `json:"ttl,omitempty"`
13192
13193	// READ-ONLY; The provisioning state of the recordset.
13194	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
13195}
13196
13197// MarshalJSON implements the json.Marshaller interface for type RecordSet.
13198func (r RecordSet) MarshalJSON() ([]byte, error) {
13199	objectMap := make(map[string]interface{})
13200	populate(objectMap, "fqdn", r.Fqdn)
13201	populate(objectMap, "ipAddresses", r.IPAddresses)
13202	populate(objectMap, "provisioningState", r.ProvisioningState)
13203	populate(objectMap, "recordSetName", r.RecordSetName)
13204	populate(objectMap, "recordType", r.RecordType)
13205	populate(objectMap, "ttl", r.TTL)
13206	return json.Marshal(objectMap)
13207}
13208
13209// ReferencedPublicIPAddress - Reference to a public IP address.
13210type ReferencedPublicIPAddress struct {
13211	// The PublicIPAddress Reference.
13212	ID *string `json:"id,omitempty"`
13213}
13214
13215// Resource - Common resource representation.
13216type Resource struct {
13217	// Resource ID.
13218	ID *string `json:"id,omitempty"`
13219
13220	// Resource location.
13221	Location *string `json:"location,omitempty"`
13222
13223	// Resource tags.
13224	Tags map[string]*string `json:"tags,omitempty"`
13225
13226	// READ-ONLY; Resource name.
13227	Name *string `json:"name,omitempty" azure:"ro"`
13228
13229	// READ-ONLY; Resource type.
13230	Type *string `json:"type,omitempty" azure:"ro"`
13231}
13232
13233// MarshalJSON implements the json.Marshaller interface for type Resource.
13234func (r Resource) MarshalJSON() ([]byte, error) {
13235	objectMap := r.marshalInternal()
13236	return json.Marshal(objectMap)
13237}
13238
13239func (r Resource) marshalInternal() map[string]interface{} {
13240	objectMap := make(map[string]interface{})
13241	populate(objectMap, "id", r.ID)
13242	populate(objectMap, "location", r.Location)
13243	populate(objectMap, "name", r.Name)
13244	populate(objectMap, "tags", r.Tags)
13245	populate(objectMap, "type", r.Type)
13246	return objectMap
13247}
13248
13249// ResourceNavigationLink resource.
13250type ResourceNavigationLink struct {
13251	SubResource
13252	// Name of the resource that is unique within a resource group. This name can be used to access the resource.
13253	Name *string `json:"name,omitempty"`
13254
13255	// Resource navigation link properties format.
13256	Properties *ResourceNavigationLinkFormat `json:"properties,omitempty"`
13257
13258	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
13259	Etag *string `json:"etag,omitempty" azure:"ro"`
13260
13261	// READ-ONLY; Resource type.
13262	Type *string `json:"type,omitempty" azure:"ro"`
13263}
13264
13265// MarshalJSON implements the json.Marshaller interface for type ResourceNavigationLink.
13266func (r ResourceNavigationLink) MarshalJSON() ([]byte, error) {
13267	objectMap := r.SubResource.marshalInternal()
13268	populate(objectMap, "etag", r.Etag)
13269	populate(objectMap, "name", r.Name)
13270	populate(objectMap, "properties", r.Properties)
13271	populate(objectMap, "type", r.Type)
13272	return json.Marshal(objectMap)
13273}
13274
13275// ResourceNavigationLinkFormat - Properties of ResourceNavigationLink.
13276type ResourceNavigationLinkFormat struct {
13277	// Link to the external resource.
13278	Link *string `json:"link,omitempty"`
13279
13280	// Resource type of the linked resource.
13281	LinkedResourceType *string `json:"linkedResourceType,omitempty"`
13282
13283	// READ-ONLY; The provisioning state of the resource navigation link resource.
13284	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
13285}
13286
13287// ResourceNavigationLinksListOptions contains the optional parameters for the ResourceNavigationLinks.List method.
13288type ResourceNavigationLinksListOptions struct {
13289	// placeholder for future optional parameters
13290}
13291
13292// ResourceNavigationLinksListResult - Response for ResourceNavigationLinks_List operation.
13293type ResourceNavigationLinksListResult struct {
13294	// The resource navigation links in a subnet.
13295	Value []*ResourceNavigationLink `json:"value,omitempty"`
13296
13297	// READ-ONLY; The URL to get the next set of results.
13298	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
13299}
13300
13301// MarshalJSON implements the json.Marshaller interface for type ResourceNavigationLinksListResult.
13302func (r ResourceNavigationLinksListResult) MarshalJSON() ([]byte, error) {
13303	objectMap := make(map[string]interface{})
13304	populate(objectMap, "nextLink", r.NextLink)
13305	populate(objectMap, "value", r.Value)
13306	return json.Marshal(objectMap)
13307}
13308
13309// ResourceSet - The base resource set for visibility and auto-approval.
13310type ResourceSet struct {
13311	// The list of subscriptions.
13312	Subscriptions []*string `json:"subscriptions,omitempty"`
13313}
13314
13315// MarshalJSON implements the json.Marshaller interface for type ResourceSet.
13316func (r ResourceSet) MarshalJSON() ([]byte, error) {
13317	objectMap := r.marshalInternal()
13318	return json.Marshal(objectMap)
13319}
13320
13321func (r ResourceSet) marshalInternal() map[string]interface{} {
13322	objectMap := make(map[string]interface{})
13323	populate(objectMap, "subscriptions", r.Subscriptions)
13324	return objectMap
13325}
13326
13327// RetentionPolicyParameters - Parameters that define the retention policy for flow log.
13328type RetentionPolicyParameters struct {
13329	// Number of days to retain flow log records.
13330	Days *int32 `json:"days,omitempty"`
13331
13332	// Flag to enable/disable retention.
13333	Enabled *bool `json:"enabled,omitempty"`
13334}
13335
13336// Route resource.
13337type Route struct {
13338	SubResource
13339	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
13340	Name *string `json:"name,omitempty"`
13341
13342	// Properties of the route.
13343	Properties *RoutePropertiesFormat `json:"properties,omitempty"`
13344
13345	// The type of the resource.
13346	Type *string `json:"type,omitempty"`
13347
13348	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
13349	Etag *string `json:"etag,omitempty" azure:"ro"`
13350}
13351
13352// MarshalJSON implements the json.Marshaller interface for type Route.
13353func (r Route) MarshalJSON() ([]byte, error) {
13354	objectMap := r.SubResource.marshalInternal()
13355	populate(objectMap, "etag", r.Etag)
13356	populate(objectMap, "name", r.Name)
13357	populate(objectMap, "properties", r.Properties)
13358	populate(objectMap, "type", r.Type)
13359	return json.Marshal(objectMap)
13360}
13361
13362// RouteFilter - Route Filter Resource.
13363type RouteFilter struct {
13364	Resource
13365	// Properties of the route filter.
13366	Properties *RouteFilterPropertiesFormat `json:"properties,omitempty"`
13367
13368	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
13369	Etag *string `json:"etag,omitempty" azure:"ro"`
13370}
13371
13372// MarshalJSON implements the json.Marshaller interface for type RouteFilter.
13373func (r RouteFilter) MarshalJSON() ([]byte, error) {
13374	objectMap := r.Resource.marshalInternal()
13375	populate(objectMap, "etag", r.Etag)
13376	populate(objectMap, "properties", r.Properties)
13377	return json.Marshal(objectMap)
13378}
13379
13380// RouteFilterListResult - Response for the ListRouteFilters API service call.
13381type RouteFilterListResult struct {
13382	// The URL to get the next set of results.
13383	NextLink *string `json:"nextLink,omitempty"`
13384
13385	// A list of route filters in a resource group.
13386	Value []*RouteFilter `json:"value,omitempty"`
13387}
13388
13389// MarshalJSON implements the json.Marshaller interface for type RouteFilterListResult.
13390func (r RouteFilterListResult) MarshalJSON() ([]byte, error) {
13391	objectMap := make(map[string]interface{})
13392	populate(objectMap, "nextLink", r.NextLink)
13393	populate(objectMap, "value", r.Value)
13394	return json.Marshal(objectMap)
13395}
13396
13397// RouteFilterPropertiesFormat - Route Filter Resource.
13398type RouteFilterPropertiesFormat struct {
13399	// Collection of RouteFilterRules contained within a route filter.
13400	Rules []*RouteFilterRule `json:"rules,omitempty"`
13401
13402	// READ-ONLY; A collection of references to express route circuit ipv6 peerings.
13403	IPv6Peerings []*ExpressRouteCircuitPeering `json:"ipv6Peerings,omitempty" azure:"ro"`
13404
13405	// READ-ONLY; A collection of references to express route circuit peerings.
13406	Peerings []*ExpressRouteCircuitPeering `json:"peerings,omitempty" azure:"ro"`
13407
13408	// READ-ONLY; The provisioning state of the route filter resource.
13409	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
13410}
13411
13412// MarshalJSON implements the json.Marshaller interface for type RouteFilterPropertiesFormat.
13413func (r RouteFilterPropertiesFormat) MarshalJSON() ([]byte, error) {
13414	objectMap := make(map[string]interface{})
13415	populate(objectMap, "ipv6Peerings", r.IPv6Peerings)
13416	populate(objectMap, "peerings", r.Peerings)
13417	populate(objectMap, "provisioningState", r.ProvisioningState)
13418	populate(objectMap, "rules", r.Rules)
13419	return json.Marshal(objectMap)
13420}
13421
13422// RouteFilterRule - Route Filter Rule Resource.
13423type RouteFilterRule struct {
13424	SubResource
13425	// Resource location.
13426	Location *string `json:"location,omitempty"`
13427
13428	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
13429	Name *string `json:"name,omitempty"`
13430
13431	// Properties of the route filter rule.
13432	Properties *RouteFilterRulePropertiesFormat `json:"properties,omitempty"`
13433
13434	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
13435	Etag *string `json:"etag,omitempty" azure:"ro"`
13436}
13437
13438// MarshalJSON implements the json.Marshaller interface for type RouteFilterRule.
13439func (r RouteFilterRule) MarshalJSON() ([]byte, error) {
13440	objectMap := r.SubResource.marshalInternal()
13441	populate(objectMap, "etag", r.Etag)
13442	populate(objectMap, "location", r.Location)
13443	populate(objectMap, "name", r.Name)
13444	populate(objectMap, "properties", r.Properties)
13445	return json.Marshal(objectMap)
13446}
13447
13448// RouteFilterRuleListResult - Response for the ListRouteFilterRules API service call.
13449type RouteFilterRuleListResult struct {
13450	// The URL to get the next set of results.
13451	NextLink *string `json:"nextLink,omitempty"`
13452
13453	// A list of RouteFilterRules in a resource group.
13454	Value []*RouteFilterRule `json:"value,omitempty"`
13455}
13456
13457// MarshalJSON implements the json.Marshaller interface for type RouteFilterRuleListResult.
13458func (r RouteFilterRuleListResult) MarshalJSON() ([]byte, error) {
13459	objectMap := make(map[string]interface{})
13460	populate(objectMap, "nextLink", r.NextLink)
13461	populate(objectMap, "value", r.Value)
13462	return json.Marshal(objectMap)
13463}
13464
13465// RouteFilterRulePropertiesFormat - Route Filter Rule Resource.
13466type RouteFilterRulePropertiesFormat struct {
13467	// REQUIRED; The access type of the rule.
13468	Access *Access `json:"access,omitempty"`
13469
13470	// REQUIRED; The collection for bgp community values to filter on. e.g. ['12076:5010','12076:5020'].
13471	Communities []*string `json:"communities,omitempty"`
13472
13473	// REQUIRED; The rule type of the rule.
13474	RouteFilterRuleType *RouteFilterRuleType `json:"routeFilterRuleType,omitempty"`
13475
13476	// READ-ONLY; The provisioning state of the route filter rule resource.
13477	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
13478}
13479
13480// MarshalJSON implements the json.Marshaller interface for type RouteFilterRulePropertiesFormat.
13481func (r RouteFilterRulePropertiesFormat) MarshalJSON() ([]byte, error) {
13482	objectMap := make(map[string]interface{})
13483	populate(objectMap, "access", r.Access)
13484	populate(objectMap, "communities", r.Communities)
13485	populate(objectMap, "provisioningState", r.ProvisioningState)
13486	populate(objectMap, "routeFilterRuleType", r.RouteFilterRuleType)
13487	return json.Marshal(objectMap)
13488}
13489
13490// RouteFilterRulesBeginCreateOrUpdateOptions contains the optional parameters for the RouteFilterRules.BeginCreateOrUpdate method.
13491type RouteFilterRulesBeginCreateOrUpdateOptions struct {
13492	// placeholder for future optional parameters
13493}
13494
13495// RouteFilterRulesBeginDeleteOptions contains the optional parameters for the RouteFilterRules.BeginDelete method.
13496type RouteFilterRulesBeginDeleteOptions struct {
13497	// placeholder for future optional parameters
13498}
13499
13500// RouteFilterRulesGetOptions contains the optional parameters for the RouteFilterRules.Get method.
13501type RouteFilterRulesGetOptions struct {
13502	// placeholder for future optional parameters
13503}
13504
13505// RouteFilterRulesListByRouteFilterOptions contains the optional parameters for the RouteFilterRules.ListByRouteFilter method.
13506type RouteFilterRulesListByRouteFilterOptions struct {
13507	// placeholder for future optional parameters
13508}
13509
13510// RouteFiltersBeginCreateOrUpdateOptions contains the optional parameters for the RouteFilters.BeginCreateOrUpdate method.
13511type RouteFiltersBeginCreateOrUpdateOptions struct {
13512	// placeholder for future optional parameters
13513}
13514
13515// RouteFiltersBeginDeleteOptions contains the optional parameters for the RouteFilters.BeginDelete method.
13516type RouteFiltersBeginDeleteOptions struct {
13517	// placeholder for future optional parameters
13518}
13519
13520// RouteFiltersGetOptions contains the optional parameters for the RouteFilters.Get method.
13521type RouteFiltersGetOptions struct {
13522	// Expands referenced express route bgp peering resources.
13523	Expand *string
13524}
13525
13526// RouteFiltersListByResourceGroupOptions contains the optional parameters for the RouteFilters.ListByResourceGroup method.
13527type RouteFiltersListByResourceGroupOptions struct {
13528	// placeholder for future optional parameters
13529}
13530
13531// RouteFiltersListOptions contains the optional parameters for the RouteFilters.List method.
13532type RouteFiltersListOptions struct {
13533	// placeholder for future optional parameters
13534}
13535
13536// RouteFiltersUpdateTagsOptions contains the optional parameters for the RouteFilters.UpdateTags method.
13537type RouteFiltersUpdateTagsOptions struct {
13538	// placeholder for future optional parameters
13539}
13540
13541// RouteListResult - Response for the ListRoute API service call.
13542type RouteListResult struct {
13543	// The URL to get the next set of results.
13544	NextLink *string `json:"nextLink,omitempty"`
13545
13546	// A list of routes in a resource group.
13547	Value []*Route `json:"value,omitempty"`
13548}
13549
13550// MarshalJSON implements the json.Marshaller interface for type RouteListResult.
13551func (r RouteListResult) MarshalJSON() ([]byte, error) {
13552	objectMap := make(map[string]interface{})
13553	populate(objectMap, "nextLink", r.NextLink)
13554	populate(objectMap, "value", r.Value)
13555	return json.Marshal(objectMap)
13556}
13557
13558// RoutePropertiesFormat - Route resource.
13559type RoutePropertiesFormat struct {
13560	// REQUIRED; The type of Azure hop the packet should be sent to.
13561	NextHopType *RouteNextHopType `json:"nextHopType,omitempty"`
13562
13563	// The destination CIDR to which the route applies.
13564	AddressPrefix *string `json:"addressPrefix,omitempty"`
13565
13566	// A value indicating whether this route overrides overlapping BGP routes regardless of LPM.
13567	HasBgpOverride *bool `json:"hasBgpOverride,omitempty"`
13568
13569	// The IP address packets should be forwarded to. Next hop values are only allowed in routes where the next hop type is VirtualAppliance.
13570	NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"`
13571
13572	// READ-ONLY; The provisioning state of the route resource.
13573	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
13574}
13575
13576// RouteTable - Route table resource.
13577type RouteTable struct {
13578	Resource
13579	// Properties of the route table.
13580	Properties *RouteTablePropertiesFormat `json:"properties,omitempty"`
13581
13582	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
13583	Etag *string `json:"etag,omitempty" azure:"ro"`
13584}
13585
13586// MarshalJSON implements the json.Marshaller interface for type RouteTable.
13587func (r RouteTable) MarshalJSON() ([]byte, error) {
13588	objectMap := r.Resource.marshalInternal()
13589	populate(objectMap, "etag", r.Etag)
13590	populate(objectMap, "properties", r.Properties)
13591	return json.Marshal(objectMap)
13592}
13593
13594// RouteTableListResult - Response for the ListRouteTable API service call.
13595type RouteTableListResult struct {
13596	// The URL to get the next set of results.
13597	NextLink *string `json:"nextLink,omitempty"`
13598
13599	// A list of route tables in a resource group.
13600	Value []*RouteTable `json:"value,omitempty"`
13601}
13602
13603// MarshalJSON implements the json.Marshaller interface for type RouteTableListResult.
13604func (r RouteTableListResult) MarshalJSON() ([]byte, error) {
13605	objectMap := make(map[string]interface{})
13606	populate(objectMap, "nextLink", r.NextLink)
13607	populate(objectMap, "value", r.Value)
13608	return json.Marshal(objectMap)
13609}
13610
13611// RouteTablePropertiesFormat - Route Table resource.
13612type RouteTablePropertiesFormat struct {
13613	// Whether to disable the routes learned by BGP on that route table. True means disable.
13614	DisableBgpRoutePropagation *bool `json:"disableBgpRoutePropagation,omitempty"`
13615
13616	// Collection of routes contained within a route table.
13617	Routes []*Route `json:"routes,omitempty"`
13618
13619	// READ-ONLY; The provisioning state of the route table resource.
13620	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
13621
13622	// READ-ONLY; The resource GUID property of the route table.
13623	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
13624
13625	// READ-ONLY; A collection of references to subnets.
13626	Subnets []*Subnet `json:"subnets,omitempty" azure:"ro"`
13627}
13628
13629// MarshalJSON implements the json.Marshaller interface for type RouteTablePropertiesFormat.
13630func (r RouteTablePropertiesFormat) MarshalJSON() ([]byte, error) {
13631	objectMap := make(map[string]interface{})
13632	populate(objectMap, "disableBgpRoutePropagation", r.DisableBgpRoutePropagation)
13633	populate(objectMap, "provisioningState", r.ProvisioningState)
13634	populate(objectMap, "resourceGuid", r.ResourceGUID)
13635	populate(objectMap, "routes", r.Routes)
13636	populate(objectMap, "subnets", r.Subnets)
13637	return json.Marshal(objectMap)
13638}
13639
13640// RouteTablesBeginCreateOrUpdateOptions contains the optional parameters for the RouteTables.BeginCreateOrUpdate method.
13641type RouteTablesBeginCreateOrUpdateOptions struct {
13642	// placeholder for future optional parameters
13643}
13644
13645// RouteTablesBeginDeleteOptions contains the optional parameters for the RouteTables.BeginDelete method.
13646type RouteTablesBeginDeleteOptions struct {
13647	// placeholder for future optional parameters
13648}
13649
13650// RouteTablesGetOptions contains the optional parameters for the RouteTables.Get method.
13651type RouteTablesGetOptions struct {
13652	// Expands referenced resources.
13653	Expand *string
13654}
13655
13656// RouteTablesListAllOptions contains the optional parameters for the RouteTables.ListAll method.
13657type RouteTablesListAllOptions struct {
13658	// placeholder for future optional parameters
13659}
13660
13661// RouteTablesListOptions contains the optional parameters for the RouteTables.List method.
13662type RouteTablesListOptions struct {
13663	// placeholder for future optional parameters
13664}
13665
13666// RouteTablesUpdateTagsOptions contains the optional parameters for the RouteTables.UpdateTags method.
13667type RouteTablesUpdateTagsOptions struct {
13668	// placeholder for future optional parameters
13669}
13670
13671// RoutesBeginCreateOrUpdateOptions contains the optional parameters for the Routes.BeginCreateOrUpdate method.
13672type RoutesBeginCreateOrUpdateOptions struct {
13673	// placeholder for future optional parameters
13674}
13675
13676// RoutesBeginDeleteOptions contains the optional parameters for the Routes.BeginDelete method.
13677type RoutesBeginDeleteOptions struct {
13678	// placeholder for future optional parameters
13679}
13680
13681// RoutesGetOptions contains the optional parameters for the Routes.Get method.
13682type RoutesGetOptions struct {
13683	// placeholder for future optional parameters
13684}
13685
13686// RoutesListOptions contains the optional parameters for the Routes.List method.
13687type RoutesListOptions struct {
13688	// placeholder for future optional parameters
13689}
13690
13691// RoutingConfiguration - Routing Configuration indicating the associated and propagated route tables for this connection.
13692type RoutingConfiguration struct {
13693	// The resource id RouteTable associated with this RoutingConfiguration.
13694	AssociatedRouteTable *SubResource `json:"associatedRouteTable,omitempty"`
13695
13696	// The list of RouteTables to advertise the routes to.
13697	PropagatedRouteTables *PropagatedRouteTable `json:"propagatedRouteTables,omitempty"`
13698
13699	// List of routes that control routing from VirtualHub into a virtual network connection.
13700	VnetRoutes *VnetRoute `json:"vnetRoutes,omitempty"`
13701}
13702
13703// SKU - The sku of this Bastion Host.
13704type SKU struct {
13705	// The name of this Bastion Host.
13706	Name *BastionHostSKUName `json:"name,omitempty"`
13707}
13708
13709// SecurityGroupNetworkInterface - Network interface and all its associated security rules.
13710type SecurityGroupNetworkInterface struct {
13711	// ID of the network interface.
13712	ID *string `json:"id,omitempty"`
13713
13714	// All security rules associated with the network interface.
13715	SecurityRuleAssociations *SecurityRuleAssociations `json:"securityRuleAssociations,omitempty"`
13716}
13717
13718// SecurityGroupViewParameters - Parameters that define the VM to check security groups for.
13719type SecurityGroupViewParameters struct {
13720	// REQUIRED; ID of the target VM.
13721	TargetResourceID *string `json:"targetResourceId,omitempty"`
13722}
13723
13724// SecurityGroupViewResult - The information about security rules applied to the specified VM.
13725type SecurityGroupViewResult struct {
13726	// List of network interfaces on the specified VM.
13727	NetworkInterfaces []*SecurityGroupNetworkInterface `json:"networkInterfaces,omitempty"`
13728}
13729
13730// MarshalJSON implements the json.Marshaller interface for type SecurityGroupViewResult.
13731func (s SecurityGroupViewResult) MarshalJSON() ([]byte, error) {
13732	objectMap := make(map[string]interface{})
13733	populate(objectMap, "networkInterfaces", s.NetworkInterfaces)
13734	return json.Marshal(objectMap)
13735}
13736
13737// SecurityPartnerProvider - Security Partner Provider resource.
13738type SecurityPartnerProvider struct {
13739	Resource
13740	// Properties of the Security Partner Provider.
13741	Properties *SecurityPartnerProviderPropertiesFormat `json:"properties,omitempty"`
13742
13743	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
13744	Etag *string `json:"etag,omitempty" azure:"ro"`
13745}
13746
13747// MarshalJSON implements the json.Marshaller interface for type SecurityPartnerProvider.
13748func (s SecurityPartnerProvider) MarshalJSON() ([]byte, error) {
13749	objectMap := s.Resource.marshalInternal()
13750	populate(objectMap, "etag", s.Etag)
13751	populate(objectMap, "properties", s.Properties)
13752	return json.Marshal(objectMap)
13753}
13754
13755// SecurityPartnerProviderListResult - Response for ListSecurityPartnerProviders API service call.
13756type SecurityPartnerProviderListResult struct {
13757	// URL to get the next set of results.
13758	NextLink *string `json:"nextLink,omitempty"`
13759
13760	// List of Security Partner Providers in a resource group.
13761	Value []*SecurityPartnerProvider `json:"value,omitempty"`
13762}
13763
13764// MarshalJSON implements the json.Marshaller interface for type SecurityPartnerProviderListResult.
13765func (s SecurityPartnerProviderListResult) MarshalJSON() ([]byte, error) {
13766	objectMap := make(map[string]interface{})
13767	populate(objectMap, "nextLink", s.NextLink)
13768	populate(objectMap, "value", s.Value)
13769	return json.Marshal(objectMap)
13770}
13771
13772// SecurityPartnerProviderPropertiesFormat - Properties of the Security Partner Provider.
13773type SecurityPartnerProviderPropertiesFormat struct {
13774	// The security provider name.
13775	SecurityProviderName *SecurityProviderName `json:"securityProviderName,omitempty"`
13776
13777	// The virtualHub to which the Security Partner Provider belongs.
13778	VirtualHub *SubResource `json:"virtualHub,omitempty"`
13779
13780	// READ-ONLY; The connection status with the Security Partner Provider.
13781	ConnectionStatus *SecurityPartnerProviderConnectionStatus `json:"connectionStatus,omitempty" azure:"ro"`
13782
13783	// READ-ONLY; The provisioning state of the Security Partner Provider resource.
13784	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
13785}
13786
13787// SecurityPartnerProvidersBeginCreateOrUpdateOptions contains the optional parameters for the SecurityPartnerProviders.BeginCreateOrUpdate method.
13788type SecurityPartnerProvidersBeginCreateOrUpdateOptions struct {
13789	// placeholder for future optional parameters
13790}
13791
13792// SecurityPartnerProvidersBeginDeleteOptions contains the optional parameters for the SecurityPartnerProviders.BeginDelete method.
13793type SecurityPartnerProvidersBeginDeleteOptions struct {
13794	// placeholder for future optional parameters
13795}
13796
13797// SecurityPartnerProvidersGetOptions contains the optional parameters for the SecurityPartnerProviders.Get method.
13798type SecurityPartnerProvidersGetOptions struct {
13799	// placeholder for future optional parameters
13800}
13801
13802// SecurityPartnerProvidersListByResourceGroupOptions contains the optional parameters for the SecurityPartnerProviders.ListByResourceGroup method.
13803type SecurityPartnerProvidersListByResourceGroupOptions struct {
13804	// placeholder for future optional parameters
13805}
13806
13807// SecurityPartnerProvidersListOptions contains the optional parameters for the SecurityPartnerProviders.List method.
13808type SecurityPartnerProvidersListOptions struct {
13809	// placeholder for future optional parameters
13810}
13811
13812// SecurityPartnerProvidersUpdateTagsOptions contains the optional parameters for the SecurityPartnerProviders.UpdateTags method.
13813type SecurityPartnerProvidersUpdateTagsOptions struct {
13814	// placeholder for future optional parameters
13815}
13816
13817// SecurityRule - Network security rule.
13818type SecurityRule struct {
13819	SubResource
13820	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
13821	Name *string `json:"name,omitempty"`
13822
13823	// Properties of the security rule.
13824	Properties *SecurityRulePropertiesFormat `json:"properties,omitempty"`
13825
13826	// The type of the resource.
13827	Type *string `json:"type,omitempty"`
13828
13829	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
13830	Etag *string `json:"etag,omitempty" azure:"ro"`
13831}
13832
13833// MarshalJSON implements the json.Marshaller interface for type SecurityRule.
13834func (s SecurityRule) MarshalJSON() ([]byte, error) {
13835	objectMap := s.SubResource.marshalInternal()
13836	populate(objectMap, "etag", s.Etag)
13837	populate(objectMap, "name", s.Name)
13838	populate(objectMap, "properties", s.Properties)
13839	populate(objectMap, "type", s.Type)
13840	return json.Marshal(objectMap)
13841}
13842
13843// SecurityRuleAssociations - All security rules associated with the network interface.
13844type SecurityRuleAssociations struct {
13845	// Collection of default security rules of the network security group.
13846	DefaultSecurityRules []*SecurityRule `json:"defaultSecurityRules,omitempty"`
13847
13848	// Collection of effective security rules.
13849	EffectiveSecurityRules []*EffectiveNetworkSecurityRule `json:"effectiveSecurityRules,omitempty"`
13850
13851	// Network interface and it's custom security rules.
13852	NetworkInterfaceAssociation *NetworkInterfaceAssociation `json:"networkInterfaceAssociation,omitempty"`
13853
13854	// Subnet and it's custom security rules.
13855	SubnetAssociation *SubnetAssociation `json:"subnetAssociation,omitempty"`
13856}
13857
13858// MarshalJSON implements the json.Marshaller interface for type SecurityRuleAssociations.
13859func (s SecurityRuleAssociations) MarshalJSON() ([]byte, error) {
13860	objectMap := make(map[string]interface{})
13861	populate(objectMap, "defaultSecurityRules", s.DefaultSecurityRules)
13862	populate(objectMap, "effectiveSecurityRules", s.EffectiveSecurityRules)
13863	populate(objectMap, "networkInterfaceAssociation", s.NetworkInterfaceAssociation)
13864	populate(objectMap, "subnetAssociation", s.SubnetAssociation)
13865	return json.Marshal(objectMap)
13866}
13867
13868// SecurityRuleListResult - Response for ListSecurityRule API service call. Retrieves all security rules that belongs to a network security group.
13869type SecurityRuleListResult struct {
13870	// The URL to get the next set of results.
13871	NextLink *string `json:"nextLink,omitempty"`
13872
13873	// The security rules in a network security group.
13874	Value []*SecurityRule `json:"value,omitempty"`
13875}
13876
13877// MarshalJSON implements the json.Marshaller interface for type SecurityRuleListResult.
13878func (s SecurityRuleListResult) MarshalJSON() ([]byte, error) {
13879	objectMap := make(map[string]interface{})
13880	populate(objectMap, "nextLink", s.NextLink)
13881	populate(objectMap, "value", s.Value)
13882	return json.Marshal(objectMap)
13883}
13884
13885// SecurityRulePropertiesFormat - Security rule resource.
13886type SecurityRulePropertiesFormat struct {
13887	// REQUIRED; The network traffic is allowed or denied.
13888	Access *SecurityRuleAccess `json:"access,omitempty"`
13889
13890	// REQUIRED; The direction of the rule. The direction specifies if rule will be evaluated on incoming or outgoing traffic.
13891	Direction *SecurityRuleDirection `json:"direction,omitempty"`
13892
13893	// REQUIRED; Network protocol this rule applies to.
13894	Protocol *SecurityRuleProtocol `json:"protocol,omitempty"`
13895
13896	// A description for this rule. Restricted to 140 chars.
13897	Description *string `json:"description,omitempty"`
13898
13899	// The destination address prefix. CIDR or destination IP range. Asterisk '*' can also be used to match all source IPs. Default tags such as 'VirtualNetwork',
13900	// 'AzureLoadBalancer' and 'Internet' can also
13901	// be used.
13902	DestinationAddressPrefix *string `json:"destinationAddressPrefix,omitempty"`
13903
13904	// The destination address prefixes. CIDR or destination IP ranges.
13905	DestinationAddressPrefixes []*string `json:"destinationAddressPrefixes,omitempty"`
13906
13907	// The application security group specified as destination.
13908	DestinationApplicationSecurityGroups []*ApplicationSecurityGroup `json:"destinationApplicationSecurityGroups,omitempty"`
13909
13910	// The destination port or range. Integer or range between 0 and 65535. Asterisk '*' can also be used to match all ports.
13911	DestinationPortRange *string `json:"destinationPortRange,omitempty"`
13912
13913	// The destination port ranges.
13914	DestinationPortRanges []*string `json:"destinationPortRanges,omitempty"`
13915
13916	// The priority of the rule. The value can be between 100 and 4096. The priority number must be unique for each rule in the collection. The lower the priority
13917	// number, the higher the priority of the rule.
13918	Priority *int32 `json:"priority,omitempty"`
13919
13920	// The CIDR or source IP range. Asterisk '*' can also be used to match all source IPs. Default tags such as 'VirtualNetwork', 'AzureLoadBalancer' and 'Internet'
13921	// can also be used. If this is an ingress
13922	// rule, specifies where network traffic originates from.
13923	SourceAddressPrefix *string `json:"sourceAddressPrefix,omitempty"`
13924
13925	// The CIDR or source IP ranges.
13926	SourceAddressPrefixes []*string `json:"sourceAddressPrefixes,omitempty"`
13927
13928	// The application security group specified as source.
13929	SourceApplicationSecurityGroups []*ApplicationSecurityGroup `json:"sourceApplicationSecurityGroups,omitempty"`
13930
13931	// The source port or range. Integer or range between 0 and 65535. Asterisk '*' can also be used to match all ports.
13932	SourcePortRange *string `json:"sourcePortRange,omitempty"`
13933
13934	// The source port ranges.
13935	SourcePortRanges []*string `json:"sourcePortRanges,omitempty"`
13936
13937	// READ-ONLY; The provisioning state of the security rule resource.
13938	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
13939}
13940
13941// MarshalJSON implements the json.Marshaller interface for type SecurityRulePropertiesFormat.
13942func (s SecurityRulePropertiesFormat) MarshalJSON() ([]byte, error) {
13943	objectMap := make(map[string]interface{})
13944	populate(objectMap, "access", s.Access)
13945	populate(objectMap, "description", s.Description)
13946	populate(objectMap, "destinationAddressPrefix", s.DestinationAddressPrefix)
13947	populate(objectMap, "destinationAddressPrefixes", s.DestinationAddressPrefixes)
13948	populate(objectMap, "destinationApplicationSecurityGroups", s.DestinationApplicationSecurityGroups)
13949	populate(objectMap, "destinationPortRange", s.DestinationPortRange)
13950	populate(objectMap, "destinationPortRanges", s.DestinationPortRanges)
13951	populate(objectMap, "direction", s.Direction)
13952	populate(objectMap, "priority", s.Priority)
13953	populate(objectMap, "protocol", s.Protocol)
13954	populate(objectMap, "provisioningState", s.ProvisioningState)
13955	populate(objectMap, "sourceAddressPrefix", s.SourceAddressPrefix)
13956	populate(objectMap, "sourceAddressPrefixes", s.SourceAddressPrefixes)
13957	populate(objectMap, "sourceApplicationSecurityGroups", s.SourceApplicationSecurityGroups)
13958	populate(objectMap, "sourcePortRange", s.SourcePortRange)
13959	populate(objectMap, "sourcePortRanges", s.SourcePortRanges)
13960	return json.Marshal(objectMap)
13961}
13962
13963// SecurityRulesBeginCreateOrUpdateOptions contains the optional parameters for the SecurityRules.BeginCreateOrUpdate method.
13964type SecurityRulesBeginCreateOrUpdateOptions struct {
13965	// placeholder for future optional parameters
13966}
13967
13968// SecurityRulesBeginDeleteOptions contains the optional parameters for the SecurityRules.BeginDelete method.
13969type SecurityRulesBeginDeleteOptions struct {
13970	// placeholder for future optional parameters
13971}
13972
13973// SecurityRulesGetOptions contains the optional parameters for the SecurityRules.Get method.
13974type SecurityRulesGetOptions struct {
13975	// placeholder for future optional parameters
13976}
13977
13978// SecurityRulesListOptions contains the optional parameters for the SecurityRules.List method.
13979type SecurityRulesListOptions struct {
13980	// placeholder for future optional parameters
13981}
13982
13983// ServiceAssociationLink resource.
13984type ServiceAssociationLink struct {
13985	SubResource
13986	// Name of the resource that is unique within a resource group. This name can be used to access the resource.
13987	Name *string `json:"name,omitempty"`
13988
13989	// Resource navigation link properties format.
13990	Properties *ServiceAssociationLinkPropertiesFormat `json:"properties,omitempty"`
13991
13992	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
13993	Etag *string `json:"etag,omitempty" azure:"ro"`
13994
13995	// READ-ONLY; Resource type.
13996	Type *string `json:"type,omitempty" azure:"ro"`
13997}
13998
13999// MarshalJSON implements the json.Marshaller interface for type ServiceAssociationLink.
14000func (s ServiceAssociationLink) MarshalJSON() ([]byte, error) {
14001	objectMap := s.SubResource.marshalInternal()
14002	populate(objectMap, "etag", s.Etag)
14003	populate(objectMap, "name", s.Name)
14004	populate(objectMap, "properties", s.Properties)
14005	populate(objectMap, "type", s.Type)
14006	return json.Marshal(objectMap)
14007}
14008
14009// ServiceAssociationLinkPropertiesFormat - Properties of ServiceAssociationLink.
14010type ServiceAssociationLinkPropertiesFormat struct {
14011	// If true, the resource can be deleted.
14012	AllowDelete *bool `json:"allowDelete,omitempty"`
14013
14014	// Link to the external resource.
14015	Link *string `json:"link,omitempty"`
14016
14017	// Resource type of the linked resource.
14018	LinkedResourceType *string `json:"linkedResourceType,omitempty"`
14019
14020	// A list of locations.
14021	Locations []*string `json:"locations,omitempty"`
14022
14023	// READ-ONLY; The provisioning state of the service association link resource.
14024	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
14025}
14026
14027// MarshalJSON implements the json.Marshaller interface for type ServiceAssociationLinkPropertiesFormat.
14028func (s ServiceAssociationLinkPropertiesFormat) MarshalJSON() ([]byte, error) {
14029	objectMap := make(map[string]interface{})
14030	populate(objectMap, "allowDelete", s.AllowDelete)
14031	populate(objectMap, "link", s.Link)
14032	populate(objectMap, "linkedResourceType", s.LinkedResourceType)
14033	populate(objectMap, "locations", s.Locations)
14034	populate(objectMap, "provisioningState", s.ProvisioningState)
14035	return json.Marshal(objectMap)
14036}
14037
14038// ServiceAssociationLinksListOptions contains the optional parameters for the ServiceAssociationLinks.List method.
14039type ServiceAssociationLinksListOptions struct {
14040	// placeholder for future optional parameters
14041}
14042
14043// ServiceAssociationLinksListResult - Response for ServiceAssociationLinks_List operation.
14044type ServiceAssociationLinksListResult struct {
14045	// The service association links in a subnet.
14046	Value []*ServiceAssociationLink `json:"value,omitempty"`
14047
14048	// READ-ONLY; The URL to get the next set of results.
14049	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
14050}
14051
14052// MarshalJSON implements the json.Marshaller interface for type ServiceAssociationLinksListResult.
14053func (s ServiceAssociationLinksListResult) MarshalJSON() ([]byte, error) {
14054	objectMap := make(map[string]interface{})
14055	populate(objectMap, "nextLink", s.NextLink)
14056	populate(objectMap, "value", s.Value)
14057	return json.Marshal(objectMap)
14058}
14059
14060// ServiceDelegationPropertiesFormat - Properties of a service delegation.
14061type ServiceDelegationPropertiesFormat struct {
14062	// The name of the service to whom the subnet should be delegated (e.g. Microsoft.Sql/servers).
14063	ServiceName *string `json:"serviceName,omitempty"`
14064
14065	// READ-ONLY; The actions permitted to the service upon delegation.
14066	Actions []*string `json:"actions,omitempty" azure:"ro"`
14067
14068	// READ-ONLY; The provisioning state of the service delegation resource.
14069	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
14070}
14071
14072// MarshalJSON implements the json.Marshaller interface for type ServiceDelegationPropertiesFormat.
14073func (s ServiceDelegationPropertiesFormat) MarshalJSON() ([]byte, error) {
14074	objectMap := make(map[string]interface{})
14075	populate(objectMap, "actions", s.Actions)
14076	populate(objectMap, "provisioningState", s.ProvisioningState)
14077	populate(objectMap, "serviceName", s.ServiceName)
14078	return json.Marshal(objectMap)
14079}
14080
14081// ServiceEndpointPoliciesBeginCreateOrUpdateOptions contains the optional parameters for the ServiceEndpointPolicies.BeginCreateOrUpdate method.
14082type ServiceEndpointPoliciesBeginCreateOrUpdateOptions struct {
14083	// placeholder for future optional parameters
14084}
14085
14086// ServiceEndpointPoliciesBeginDeleteOptions contains the optional parameters for the ServiceEndpointPolicies.BeginDelete method.
14087type ServiceEndpointPoliciesBeginDeleteOptions struct {
14088	// placeholder for future optional parameters
14089}
14090
14091// ServiceEndpointPoliciesGetOptions contains the optional parameters for the ServiceEndpointPolicies.Get method.
14092type ServiceEndpointPoliciesGetOptions struct {
14093	// Expands referenced resources.
14094	Expand *string
14095}
14096
14097// ServiceEndpointPoliciesListByResourceGroupOptions contains the optional parameters for the ServiceEndpointPolicies.ListByResourceGroup method.
14098type ServiceEndpointPoliciesListByResourceGroupOptions struct {
14099	// placeholder for future optional parameters
14100}
14101
14102// ServiceEndpointPoliciesListOptions contains the optional parameters for the ServiceEndpointPolicies.List method.
14103type ServiceEndpointPoliciesListOptions struct {
14104	// placeholder for future optional parameters
14105}
14106
14107// ServiceEndpointPoliciesUpdateTagsOptions contains the optional parameters for the ServiceEndpointPolicies.UpdateTags method.
14108type ServiceEndpointPoliciesUpdateTagsOptions struct {
14109	// placeholder for future optional parameters
14110}
14111
14112// ServiceEndpointPolicy - Service End point policy resource.
14113type ServiceEndpointPolicy struct {
14114	Resource
14115	// Properties of the service end point policy.
14116	Properties *ServiceEndpointPolicyPropertiesFormat `json:"properties,omitempty"`
14117
14118	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
14119	Etag *string `json:"etag,omitempty" azure:"ro"`
14120
14121	// READ-ONLY; Kind of service endpoint policy. This is metadata used for the Azure portal experience.
14122	Kind *string `json:"kind,omitempty" azure:"ro"`
14123}
14124
14125// MarshalJSON implements the json.Marshaller interface for type ServiceEndpointPolicy.
14126func (s ServiceEndpointPolicy) MarshalJSON() ([]byte, error) {
14127	objectMap := s.Resource.marshalInternal()
14128	populate(objectMap, "etag", s.Etag)
14129	populate(objectMap, "kind", s.Kind)
14130	populate(objectMap, "properties", s.Properties)
14131	return json.Marshal(objectMap)
14132}
14133
14134// ServiceEndpointPolicyDefinition - Service Endpoint policy definitions.
14135type ServiceEndpointPolicyDefinition struct {
14136	SubResource
14137	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
14138	Name *string `json:"name,omitempty"`
14139
14140	// Properties of the service endpoint policy definition.
14141	Properties *ServiceEndpointPolicyDefinitionPropertiesFormat `json:"properties,omitempty"`
14142
14143	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
14144	Etag *string `json:"etag,omitempty" azure:"ro"`
14145}
14146
14147// MarshalJSON implements the json.Marshaller interface for type ServiceEndpointPolicyDefinition.
14148func (s ServiceEndpointPolicyDefinition) MarshalJSON() ([]byte, error) {
14149	objectMap := s.SubResource.marshalInternal()
14150	populate(objectMap, "etag", s.Etag)
14151	populate(objectMap, "name", s.Name)
14152	populate(objectMap, "properties", s.Properties)
14153	return json.Marshal(objectMap)
14154}
14155
14156// ServiceEndpointPolicyDefinitionListResult - Response for ListServiceEndpointPolicyDefinition API service call. Retrieves all service endpoint policy
14157// definition that belongs to a service endpoint policy.
14158type ServiceEndpointPolicyDefinitionListResult struct {
14159	// The URL to get the next set of results.
14160	NextLink *string `json:"nextLink,omitempty"`
14161
14162	// The service endpoint policy definition in a service endpoint policy.
14163	Value []*ServiceEndpointPolicyDefinition `json:"value,omitempty"`
14164}
14165
14166// MarshalJSON implements the json.Marshaller interface for type ServiceEndpointPolicyDefinitionListResult.
14167func (s ServiceEndpointPolicyDefinitionListResult) MarshalJSON() ([]byte, error) {
14168	objectMap := make(map[string]interface{})
14169	populate(objectMap, "nextLink", s.NextLink)
14170	populate(objectMap, "value", s.Value)
14171	return json.Marshal(objectMap)
14172}
14173
14174// ServiceEndpointPolicyDefinitionPropertiesFormat - Service Endpoint policy definition resource.
14175type ServiceEndpointPolicyDefinitionPropertiesFormat struct {
14176	// A description for this rule. Restricted to 140 chars.
14177	Description *string `json:"description,omitempty"`
14178
14179	// Service endpoint name.
14180	Service *string `json:"service,omitempty"`
14181
14182	// A list of service resources.
14183	ServiceResources []*string `json:"serviceResources,omitempty"`
14184
14185	// READ-ONLY; The provisioning state of the service endpoint policy definition resource.
14186	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
14187}
14188
14189// MarshalJSON implements the json.Marshaller interface for type ServiceEndpointPolicyDefinitionPropertiesFormat.
14190func (s ServiceEndpointPolicyDefinitionPropertiesFormat) MarshalJSON() ([]byte, error) {
14191	objectMap := make(map[string]interface{})
14192	populate(objectMap, "description", s.Description)
14193	populate(objectMap, "provisioningState", s.ProvisioningState)
14194	populate(objectMap, "service", s.Service)
14195	populate(objectMap, "serviceResources", s.ServiceResources)
14196	return json.Marshal(objectMap)
14197}
14198
14199// ServiceEndpointPolicyDefinitionsBeginCreateOrUpdateOptions contains the optional parameters for the ServiceEndpointPolicyDefinitions.BeginCreateOrUpdate
14200// method.
14201type ServiceEndpointPolicyDefinitionsBeginCreateOrUpdateOptions struct {
14202	// placeholder for future optional parameters
14203}
14204
14205// ServiceEndpointPolicyDefinitionsBeginDeleteOptions contains the optional parameters for the ServiceEndpointPolicyDefinitions.BeginDelete method.
14206type ServiceEndpointPolicyDefinitionsBeginDeleteOptions struct {
14207	// placeholder for future optional parameters
14208}
14209
14210// ServiceEndpointPolicyDefinitionsGetOptions contains the optional parameters for the ServiceEndpointPolicyDefinitions.Get method.
14211type ServiceEndpointPolicyDefinitionsGetOptions struct {
14212	// placeholder for future optional parameters
14213}
14214
14215// ServiceEndpointPolicyDefinitionsListByResourceGroupOptions contains the optional parameters for the ServiceEndpointPolicyDefinitions.ListByResourceGroup
14216// method.
14217type ServiceEndpointPolicyDefinitionsListByResourceGroupOptions struct {
14218	// placeholder for future optional parameters
14219}
14220
14221// ServiceEndpointPolicyListResult - Response for ListServiceEndpointPolicies API service call.
14222type ServiceEndpointPolicyListResult struct {
14223	// A list of ServiceEndpointPolicy resources.
14224	Value []*ServiceEndpointPolicy `json:"value,omitempty"`
14225
14226	// READ-ONLY; The URL to get the next set of results.
14227	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
14228}
14229
14230// MarshalJSON implements the json.Marshaller interface for type ServiceEndpointPolicyListResult.
14231func (s ServiceEndpointPolicyListResult) MarshalJSON() ([]byte, error) {
14232	objectMap := make(map[string]interface{})
14233	populate(objectMap, "nextLink", s.NextLink)
14234	populate(objectMap, "value", s.Value)
14235	return json.Marshal(objectMap)
14236}
14237
14238// ServiceEndpointPolicyPropertiesFormat - Service Endpoint Policy resource.
14239type ServiceEndpointPolicyPropertiesFormat struct {
14240	// A collection of service endpoint policy definitions of the service endpoint policy.
14241	ServiceEndpointPolicyDefinitions []*ServiceEndpointPolicyDefinition `json:"serviceEndpointPolicyDefinitions,omitempty"`
14242
14243	// READ-ONLY; The provisioning state of the service endpoint policy resource.
14244	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
14245
14246	// READ-ONLY; The resource GUID property of the service endpoint policy resource.
14247	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
14248
14249	// READ-ONLY; A collection of references to subnets.
14250	Subnets []*Subnet `json:"subnets,omitempty" azure:"ro"`
14251}
14252
14253// MarshalJSON implements the json.Marshaller interface for type ServiceEndpointPolicyPropertiesFormat.
14254func (s ServiceEndpointPolicyPropertiesFormat) MarshalJSON() ([]byte, error) {
14255	objectMap := make(map[string]interface{})
14256	populate(objectMap, "provisioningState", s.ProvisioningState)
14257	populate(objectMap, "resourceGuid", s.ResourceGUID)
14258	populate(objectMap, "serviceEndpointPolicyDefinitions", s.ServiceEndpointPolicyDefinitions)
14259	populate(objectMap, "subnets", s.Subnets)
14260	return json.Marshal(objectMap)
14261}
14262
14263// ServiceEndpointPropertiesFormat - The service endpoint properties.
14264type ServiceEndpointPropertiesFormat struct {
14265	// A list of locations.
14266	Locations []*string `json:"locations,omitempty"`
14267
14268	// The type of the endpoint service.
14269	Service *string `json:"service,omitempty"`
14270
14271	// READ-ONLY; The provisioning state of the service endpoint resource.
14272	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
14273}
14274
14275// MarshalJSON implements the json.Marshaller interface for type ServiceEndpointPropertiesFormat.
14276func (s ServiceEndpointPropertiesFormat) MarshalJSON() ([]byte, error) {
14277	objectMap := make(map[string]interface{})
14278	populate(objectMap, "locations", s.Locations)
14279	populate(objectMap, "provisioningState", s.ProvisioningState)
14280	populate(objectMap, "service", s.Service)
14281	return json.Marshal(objectMap)
14282}
14283
14284// ServiceTagInformation - The service tag information.
14285type ServiceTagInformation struct {
14286	// READ-ONLY; The ID of service tag.
14287	ID *string `json:"id,omitempty" azure:"ro"`
14288
14289	// READ-ONLY; The name of service tag.
14290	Name *string `json:"name,omitempty" azure:"ro"`
14291
14292	// READ-ONLY; Properties of the service tag information.
14293	Properties *ServiceTagInformationPropertiesFormat `json:"properties,omitempty" azure:"ro"`
14294}
14295
14296// ServiceTagInformationPropertiesFormat - Properties of the service tag information.
14297type ServiceTagInformationPropertiesFormat struct {
14298	// READ-ONLY; The list of IP address prefixes.
14299	AddressPrefixes []*string `json:"addressPrefixes,omitempty" azure:"ro"`
14300
14301	// READ-ONLY; The iteration number of service tag.
14302	ChangeNumber *string `json:"changeNumber,omitempty" azure:"ro"`
14303
14304	// READ-ONLY; The region of service tag.
14305	Region *string `json:"region,omitempty" azure:"ro"`
14306
14307	// READ-ONLY; The state of the service tag.
14308	State *string `json:"state,omitempty" azure:"ro"`
14309
14310	// READ-ONLY; The name of system service.
14311	SystemService *string `json:"systemService,omitempty" azure:"ro"`
14312}
14313
14314// MarshalJSON implements the json.Marshaller interface for type ServiceTagInformationPropertiesFormat.
14315func (s ServiceTagInformationPropertiesFormat) MarshalJSON() ([]byte, error) {
14316	objectMap := make(map[string]interface{})
14317	populate(objectMap, "addressPrefixes", s.AddressPrefixes)
14318	populate(objectMap, "changeNumber", s.ChangeNumber)
14319	populate(objectMap, "region", s.Region)
14320	populate(objectMap, "state", s.State)
14321	populate(objectMap, "systemService", s.SystemService)
14322	return json.Marshal(objectMap)
14323}
14324
14325// ServiceTagsListOptions contains the optional parameters for the ServiceTags.List method.
14326type ServiceTagsListOptions struct {
14327	// placeholder for future optional parameters
14328}
14329
14330// ServiceTagsListResult - Response for the ListServiceTags API service call.
14331type ServiceTagsListResult struct {
14332	// READ-ONLY; The iteration number.
14333	ChangeNumber *string `json:"changeNumber,omitempty" azure:"ro"`
14334
14335	// READ-ONLY; The name of the cloud.
14336	Cloud *string `json:"cloud,omitempty" azure:"ro"`
14337
14338	// READ-ONLY; The ID of the cloud.
14339	ID *string `json:"id,omitempty" azure:"ro"`
14340
14341	// READ-ONLY; The name of the cloud.
14342	Name *string `json:"name,omitempty" azure:"ro"`
14343
14344	// READ-ONLY; The URL to get next page of service tag information resources.
14345	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
14346
14347	// READ-ONLY; The azure resource type.
14348	Type *string `json:"type,omitempty" azure:"ro"`
14349
14350	// READ-ONLY; The list of service tag information resources.
14351	Values []*ServiceTagInformation `json:"values,omitempty" azure:"ro"`
14352}
14353
14354// MarshalJSON implements the json.Marshaller interface for type ServiceTagsListResult.
14355func (s ServiceTagsListResult) MarshalJSON() ([]byte, error) {
14356	objectMap := make(map[string]interface{})
14357	populate(objectMap, "changeNumber", s.ChangeNumber)
14358	populate(objectMap, "cloud", s.Cloud)
14359	populate(objectMap, "id", s.ID)
14360	populate(objectMap, "name", s.Name)
14361	populate(objectMap, "nextLink", s.NextLink)
14362	populate(objectMap, "type", s.Type)
14363	populate(objectMap, "values", s.Values)
14364	return json.Marshal(objectMap)
14365}
14366
14367// SessionIDs - List of session IDs.
14368type SessionIDs struct {
14369	// List of session IDs.
14370	SessionIDs []*string `json:"sessionIds,omitempty"`
14371}
14372
14373// MarshalJSON implements the json.Marshaller interface for type SessionIDs.
14374func (s SessionIDs) MarshalJSON() ([]byte, error) {
14375	objectMap := make(map[string]interface{})
14376	populate(objectMap, "sessionIds", s.SessionIDs)
14377	return json.Marshal(objectMap)
14378}
14379
14380// StaticRoute - List of all Static Routes.
14381type StaticRoute struct {
14382	// List of all address prefixes.
14383	AddressPrefixes []*string `json:"addressPrefixes,omitempty"`
14384
14385	// The name of the StaticRoute that is unique within a VnetRoute.
14386	Name *string `json:"name,omitempty"`
14387
14388	// The ip address of the next hop.
14389	NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"`
14390}
14391
14392// MarshalJSON implements the json.Marshaller interface for type StaticRoute.
14393func (s StaticRoute) MarshalJSON() ([]byte, error) {
14394	objectMap := make(map[string]interface{})
14395	populate(objectMap, "addressPrefixes", s.AddressPrefixes)
14396	populate(objectMap, "name", s.Name)
14397	populate(objectMap, "nextHopIpAddress", s.NextHopIPAddress)
14398	return json.Marshal(objectMap)
14399}
14400
14401// SubResource - Reference to another subresource.
14402type SubResource struct {
14403	// Resource ID.
14404	ID *string `json:"id,omitempty"`
14405}
14406
14407// MarshalJSON implements the json.Marshaller interface for type SubResource.
14408func (s SubResource) MarshalJSON() ([]byte, error) {
14409	objectMap := s.marshalInternal()
14410	return json.Marshal(objectMap)
14411}
14412
14413func (s SubResource) marshalInternal() map[string]interface{} {
14414	objectMap := make(map[string]interface{})
14415	populate(objectMap, "id", s.ID)
14416	return objectMap
14417}
14418
14419// Subnet in a virtual network resource.
14420type Subnet struct {
14421	SubResource
14422	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
14423	Name *string `json:"name,omitempty"`
14424
14425	// Properties of the subnet.
14426	Properties *SubnetPropertiesFormat `json:"properties,omitempty"`
14427
14428	// Resource type.
14429	Type *string `json:"type,omitempty"`
14430
14431	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
14432	Etag *string `json:"etag,omitempty" azure:"ro"`
14433}
14434
14435// MarshalJSON implements the json.Marshaller interface for type Subnet.
14436func (s Subnet) MarshalJSON() ([]byte, error) {
14437	objectMap := s.SubResource.marshalInternal()
14438	populate(objectMap, "etag", s.Etag)
14439	populate(objectMap, "name", s.Name)
14440	populate(objectMap, "properties", s.Properties)
14441	populate(objectMap, "type", s.Type)
14442	return json.Marshal(objectMap)
14443}
14444
14445// SubnetAssociation - Subnet and it's custom security rules.
14446type SubnetAssociation struct {
14447	// Collection of custom security rules.
14448	SecurityRules []*SecurityRule `json:"securityRules,omitempty"`
14449
14450	// READ-ONLY; Subnet ID.
14451	ID *string `json:"id,omitempty" azure:"ro"`
14452}
14453
14454// MarshalJSON implements the json.Marshaller interface for type SubnetAssociation.
14455func (s SubnetAssociation) MarshalJSON() ([]byte, error) {
14456	objectMap := make(map[string]interface{})
14457	populate(objectMap, "id", s.ID)
14458	populate(objectMap, "securityRules", s.SecurityRules)
14459	return json.Marshal(objectMap)
14460}
14461
14462// SubnetListResult - Response for ListSubnets API service callRetrieves all subnet that belongs to a virtual network.
14463type SubnetListResult struct {
14464	// The URL to get the next set of results.
14465	NextLink *string `json:"nextLink,omitempty"`
14466
14467	// The subnets in a virtual network.
14468	Value []*Subnet `json:"value,omitempty"`
14469}
14470
14471// MarshalJSON implements the json.Marshaller interface for type SubnetListResult.
14472func (s SubnetListResult) MarshalJSON() ([]byte, error) {
14473	objectMap := make(map[string]interface{})
14474	populate(objectMap, "nextLink", s.NextLink)
14475	populate(objectMap, "value", s.Value)
14476	return json.Marshal(objectMap)
14477}
14478
14479// SubnetPropertiesFormat - Properties of the subnet.
14480type SubnetPropertiesFormat struct {
14481	// The address prefix for the subnet.
14482	AddressPrefix *string `json:"addressPrefix,omitempty"`
14483
14484	// List of address prefixes for the subnet.
14485	AddressPrefixes []*string `json:"addressPrefixes,omitempty"`
14486
14487	// Application gateway IP configurations of virtual network resource.
14488	ApplicationGatewayIPConfigurations []*ApplicationGatewayIPConfiguration `json:"applicationGatewayIpConfigurations,omitempty"`
14489
14490	// An array of references to the delegations on the subnet.
14491	Delegations []*Delegation `json:"delegations,omitempty"`
14492
14493	// Array of IpAllocation which reference this subnet.
14494	IPAllocations []*SubResource `json:"ipAllocations,omitempty"`
14495
14496	// Nat gateway associated with this subnet.
14497	NatGateway *SubResource `json:"natGateway,omitempty"`
14498
14499	// The reference to the NetworkSecurityGroup resource.
14500	NetworkSecurityGroup *NetworkSecurityGroup `json:"networkSecurityGroup,omitempty"`
14501
14502	// Enable or Disable apply network policies on private end point in the subnet.
14503	PrivateEndpointNetworkPolicies *VirtualNetworkPrivateEndpointNetworkPolicies `json:"privateEndpointNetworkPolicies,omitempty"`
14504
14505	// Enable or Disable apply network policies on private link service in the subnet.
14506	PrivateLinkServiceNetworkPolicies *VirtualNetworkPrivateLinkServiceNetworkPolicies `json:"privateLinkServiceNetworkPolicies,omitempty"`
14507
14508	// The reference to the RouteTable resource.
14509	RouteTable *RouteTable `json:"routeTable,omitempty"`
14510
14511	// An array of service endpoint policies.
14512	ServiceEndpointPolicies []*ServiceEndpointPolicy `json:"serviceEndpointPolicies,omitempty"`
14513
14514	// An array of service endpoints.
14515	ServiceEndpoints []*ServiceEndpointPropertiesFormat `json:"serviceEndpoints,omitempty"`
14516
14517	// READ-ONLY; Array of IP configuration profiles which reference this subnet.
14518	IPConfigurationProfiles []*IPConfigurationProfile `json:"ipConfigurationProfiles,omitempty" azure:"ro"`
14519
14520	// READ-ONLY; An array of references to the network interface IP configurations using subnet.
14521	IPConfigurations []*IPConfiguration `json:"ipConfigurations,omitempty" azure:"ro"`
14522
14523	// READ-ONLY; An array of references to private endpoints.
14524	PrivateEndpoints []*PrivateEndpoint `json:"privateEndpoints,omitempty" azure:"ro"`
14525
14526	// READ-ONLY; The provisioning state of the subnet resource.
14527	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
14528
14529	// READ-ONLY; A read-only string identifying the intention of use for this subnet based on delegations and other user-defined properties.
14530	Purpose *string `json:"purpose,omitempty" azure:"ro"`
14531
14532	// READ-ONLY; An array of references to the external resources using subnet.
14533	ResourceNavigationLinks []*ResourceNavigationLink `json:"resourceNavigationLinks,omitempty" azure:"ro"`
14534
14535	// READ-ONLY; An array of references to services injecting into this subnet.
14536	ServiceAssociationLinks []*ServiceAssociationLink `json:"serviceAssociationLinks,omitempty" azure:"ro"`
14537}
14538
14539// MarshalJSON implements the json.Marshaller interface for type SubnetPropertiesFormat.
14540func (s SubnetPropertiesFormat) MarshalJSON() ([]byte, error) {
14541	objectMap := make(map[string]interface{})
14542	populate(objectMap, "addressPrefix", s.AddressPrefix)
14543	populate(objectMap, "addressPrefixes", s.AddressPrefixes)
14544	populate(objectMap, "applicationGatewayIpConfigurations", s.ApplicationGatewayIPConfigurations)
14545	populate(objectMap, "delegations", s.Delegations)
14546	populate(objectMap, "ipAllocations", s.IPAllocations)
14547	populate(objectMap, "ipConfigurationProfiles", s.IPConfigurationProfiles)
14548	populate(objectMap, "ipConfigurations", s.IPConfigurations)
14549	populate(objectMap, "natGateway", s.NatGateway)
14550	populate(objectMap, "networkSecurityGroup", s.NetworkSecurityGroup)
14551	populate(objectMap, "privateEndpointNetworkPolicies", s.PrivateEndpointNetworkPolicies)
14552	populate(objectMap, "privateEndpoints", s.PrivateEndpoints)
14553	populate(objectMap, "privateLinkServiceNetworkPolicies", s.PrivateLinkServiceNetworkPolicies)
14554	populate(objectMap, "provisioningState", s.ProvisioningState)
14555	populate(objectMap, "purpose", s.Purpose)
14556	populate(objectMap, "resourceNavigationLinks", s.ResourceNavigationLinks)
14557	populate(objectMap, "routeTable", s.RouteTable)
14558	populate(objectMap, "serviceAssociationLinks", s.ServiceAssociationLinks)
14559	populate(objectMap, "serviceEndpointPolicies", s.ServiceEndpointPolicies)
14560	populate(objectMap, "serviceEndpoints", s.ServiceEndpoints)
14561	return json.Marshal(objectMap)
14562}
14563
14564// SubnetsBeginCreateOrUpdateOptions contains the optional parameters for the Subnets.BeginCreateOrUpdate method.
14565type SubnetsBeginCreateOrUpdateOptions struct {
14566	// placeholder for future optional parameters
14567}
14568
14569// SubnetsBeginDeleteOptions contains the optional parameters for the Subnets.BeginDelete method.
14570type SubnetsBeginDeleteOptions struct {
14571	// placeholder for future optional parameters
14572}
14573
14574// SubnetsBeginPrepareNetworkPoliciesOptions contains the optional parameters for the Subnets.BeginPrepareNetworkPolicies method.
14575type SubnetsBeginPrepareNetworkPoliciesOptions struct {
14576	// placeholder for future optional parameters
14577}
14578
14579// SubnetsBeginUnprepareNetworkPoliciesOptions contains the optional parameters for the Subnets.BeginUnprepareNetworkPolicies method.
14580type SubnetsBeginUnprepareNetworkPoliciesOptions struct {
14581	// placeholder for future optional parameters
14582}
14583
14584// SubnetsGetOptions contains the optional parameters for the Subnets.Get method.
14585type SubnetsGetOptions struct {
14586	// Expands referenced resources.
14587	Expand *string
14588}
14589
14590// SubnetsListOptions contains the optional parameters for the Subnets.List method.
14591type SubnetsListOptions struct {
14592	// placeholder for future optional parameters
14593}
14594
14595// TagsObject - Tags object for patch operations.
14596type TagsObject struct {
14597	// Resource tags.
14598	Tags map[string]*string `json:"tags,omitempty"`
14599}
14600
14601// MarshalJSON implements the json.Marshaller interface for type TagsObject.
14602func (t TagsObject) MarshalJSON() ([]byte, error) {
14603	objectMap := make(map[string]interface{})
14604	populate(objectMap, "tags", t.Tags)
14605	return json.Marshal(objectMap)
14606}
14607
14608// Topology of the specified resource group.
14609type Topology struct {
14610	// A list of topology resources.
14611	Resources []*TopologyResource `json:"resources,omitempty"`
14612
14613	// READ-ONLY; The datetime when the topology was initially created for the resource group.
14614	CreatedDateTime *time.Time `json:"createdDateTime,omitempty" azure:"ro"`
14615
14616	// READ-ONLY; GUID representing the operation id.
14617	ID *string `json:"id,omitempty" azure:"ro"`
14618
14619	// READ-ONLY; The datetime when the topology was last modified.
14620	LastModified *time.Time `json:"lastModified,omitempty" azure:"ro"`
14621}
14622
14623// MarshalJSON implements the json.Marshaller interface for type Topology.
14624func (t Topology) MarshalJSON() ([]byte, error) {
14625	objectMap := make(map[string]interface{})
14626	populate(objectMap, "createdDateTime", (*timeRFC3339)(t.CreatedDateTime))
14627	populate(objectMap, "id", t.ID)
14628	populate(objectMap, "lastModified", (*timeRFC3339)(t.LastModified))
14629	populate(objectMap, "resources", t.Resources)
14630	return json.Marshal(objectMap)
14631}
14632
14633// UnmarshalJSON implements the json.Unmarshaller interface for type Topology.
14634func (t *Topology) UnmarshalJSON(data []byte) error {
14635	var rawMsg map[string]json.RawMessage
14636	if err := json.Unmarshal(data, &rawMsg); err != nil {
14637		return err
14638	}
14639	for key, val := range rawMsg {
14640		var err error
14641		switch key {
14642		case "createdDateTime":
14643			var aux timeRFC3339
14644			err = unpopulate(val, &aux)
14645			t.CreatedDateTime = (*time.Time)(&aux)
14646			delete(rawMsg, key)
14647		case "id":
14648			err = unpopulate(val, &t.ID)
14649			delete(rawMsg, key)
14650		case "lastModified":
14651			var aux timeRFC3339
14652			err = unpopulate(val, &aux)
14653			t.LastModified = (*time.Time)(&aux)
14654			delete(rawMsg, key)
14655		case "resources":
14656			err = unpopulate(val, &t.Resources)
14657			delete(rawMsg, key)
14658		}
14659		if err != nil {
14660			return err
14661		}
14662	}
14663	return nil
14664}
14665
14666// TopologyAssociation - Resources that have an association with the parent resource.
14667type TopologyAssociation struct {
14668	// The association type of the child resource to the parent resource.
14669	AssociationType *AssociationType `json:"associationType,omitempty"`
14670
14671	// The name of the resource that is associated with the parent resource.
14672	Name *string `json:"name,omitempty"`
14673
14674	// The ID of the resource that is associated with the parent resource.
14675	ResourceID *string `json:"resourceId,omitempty"`
14676}
14677
14678// TopologyParameters - Parameters that define the representation of topology.
14679type TopologyParameters struct {
14680	// The name of the target resource group to perform topology on.
14681	TargetResourceGroupName *string `json:"targetResourceGroupName,omitempty"`
14682
14683	// The reference to the Subnet resource.
14684	TargetSubnet *SubResource `json:"targetSubnet,omitempty"`
14685
14686	// The reference to the Virtual Network resource.
14687	TargetVirtualNetwork *SubResource `json:"targetVirtualNetwork,omitempty"`
14688}
14689
14690// TopologyResource - The network resource topology information for the given resource group.
14691type TopologyResource struct {
14692	// Holds the associations the resource has with other resources in the resource group.
14693	Associations []*TopologyAssociation `json:"associations,omitempty"`
14694
14695	// ID of the resource.
14696	ID *string `json:"id,omitempty"`
14697
14698	// Resource location.
14699	Location *string `json:"location,omitempty"`
14700
14701	// Name of the resource.
14702	Name *string `json:"name,omitempty"`
14703}
14704
14705// MarshalJSON implements the json.Marshaller interface for type TopologyResource.
14706func (t TopologyResource) MarshalJSON() ([]byte, error) {
14707	objectMap := make(map[string]interface{})
14708	populate(objectMap, "associations", t.Associations)
14709	populate(objectMap, "id", t.ID)
14710	populate(objectMap, "location", t.Location)
14711	populate(objectMap, "name", t.Name)
14712	return json.Marshal(objectMap)
14713}
14714
14715// TrafficAnalyticsConfigurationProperties - Parameters that define the configuration of traffic analytics.
14716type TrafficAnalyticsConfigurationProperties struct {
14717	// Flag to enable/disable traffic analytics.
14718	Enabled *bool `json:"enabled,omitempty"`
14719
14720	// The interval in minutes which would decide how frequently TA service should do flow analytics.
14721	TrafficAnalyticsInterval *int32 `json:"trafficAnalyticsInterval,omitempty"`
14722
14723	// The resource guid of the attached workspace.
14724	WorkspaceID *string `json:"workspaceId,omitempty"`
14725
14726	// The location of the attached workspace.
14727	WorkspaceRegion *string `json:"workspaceRegion,omitempty"`
14728
14729	// Resource Id of the attached workspace.
14730	WorkspaceResourceID *string `json:"workspaceResourceId,omitempty"`
14731}
14732
14733// TrafficAnalyticsProperties - Parameters that define the configuration of traffic analytics.
14734type TrafficAnalyticsProperties struct {
14735	// Parameters that define the configuration of traffic analytics.
14736	NetworkWatcherFlowAnalyticsConfiguration *TrafficAnalyticsConfigurationProperties `json:"networkWatcherFlowAnalyticsConfiguration,omitempty"`
14737}
14738
14739// TrafficSelectorPolicy - An traffic selector policy for a virtual network gateway connection.
14740type TrafficSelectorPolicy struct {
14741	// REQUIRED; A collection of local address spaces in CIDR format.
14742	LocalAddressRanges []*string `json:"localAddressRanges,omitempty"`
14743
14744	// REQUIRED; A collection of remote address spaces in CIDR format.
14745	RemoteAddressRanges []*string `json:"remoteAddressRanges,omitempty"`
14746}
14747
14748// MarshalJSON implements the json.Marshaller interface for type TrafficSelectorPolicy.
14749func (t TrafficSelectorPolicy) MarshalJSON() ([]byte, error) {
14750	objectMap := make(map[string]interface{})
14751	populate(objectMap, "localAddressRanges", t.LocalAddressRanges)
14752	populate(objectMap, "remoteAddressRanges", t.RemoteAddressRanges)
14753	return json.Marshal(objectMap)
14754}
14755
14756// TroubleshootingDetails - Information gained from troubleshooting of specified resource.
14757type TroubleshootingDetails struct {
14758	// Details on troubleshooting results.
14759	Detail *string `json:"detail,omitempty"`
14760
14761	// The id of the get troubleshoot operation.
14762	ID *string `json:"id,omitempty"`
14763
14764	// Reason type of failure.
14765	ReasonType *string `json:"reasonType,omitempty"`
14766
14767	// List of recommended actions.
14768	RecommendedActions []*TroubleshootingRecommendedActions `json:"recommendedActions,omitempty"`
14769
14770	// A summary of troubleshooting.
14771	Summary *string `json:"summary,omitempty"`
14772}
14773
14774// MarshalJSON implements the json.Marshaller interface for type TroubleshootingDetails.
14775func (t TroubleshootingDetails) MarshalJSON() ([]byte, error) {
14776	objectMap := make(map[string]interface{})
14777	populate(objectMap, "detail", t.Detail)
14778	populate(objectMap, "id", t.ID)
14779	populate(objectMap, "reasonType", t.ReasonType)
14780	populate(objectMap, "recommendedActions", t.RecommendedActions)
14781	populate(objectMap, "summary", t.Summary)
14782	return json.Marshal(objectMap)
14783}
14784
14785// TroubleshootingParameters - Parameters that define the resource to troubleshoot.
14786type TroubleshootingParameters struct {
14787	// REQUIRED; Properties of the troubleshooting resource.
14788	Properties *TroubleshootingProperties `json:"properties,omitempty"`
14789
14790	// REQUIRED; The target resource to troubleshoot.
14791	TargetResourceID *string `json:"targetResourceId,omitempty"`
14792}
14793
14794// TroubleshootingProperties - Storage location provided for troubleshoot.
14795type TroubleshootingProperties struct {
14796	// REQUIRED; The ID for the storage account to save the troubleshoot result.
14797	StorageID *string `json:"storageId,omitempty"`
14798
14799	// REQUIRED; The path to the blob to save the troubleshoot result in.
14800	StoragePath *string `json:"storagePath,omitempty"`
14801}
14802
14803// TroubleshootingRecommendedActions - Recommended actions based on discovered issues.
14804type TroubleshootingRecommendedActions struct {
14805	// ID of the recommended action.
14806	ActionID *string `json:"actionId,omitempty"`
14807
14808	// Description of recommended actions.
14809	ActionText *string `json:"actionText,omitempty"`
14810
14811	// The uri linking to a documentation for the recommended troubleshooting actions.
14812	ActionURI *string `json:"actionUri,omitempty"`
14813
14814	// The information from the URI for the recommended troubleshooting actions.
14815	ActionURIText *string `json:"actionUriText,omitempty"`
14816}
14817
14818// TroubleshootingResult - Troubleshooting information gained from specified resource.
14819type TroubleshootingResult struct {
14820	// The result code of the troubleshooting.
14821	Code *string `json:"code,omitempty"`
14822
14823	// The end time of the troubleshooting.
14824	EndTime *time.Time `json:"endTime,omitempty"`
14825
14826	// Information from troubleshooting.
14827	Results []*TroubleshootingDetails `json:"results,omitempty"`
14828
14829	// The start time of the troubleshooting.
14830	StartTime *time.Time `json:"startTime,omitempty"`
14831}
14832
14833// MarshalJSON implements the json.Marshaller interface for type TroubleshootingResult.
14834func (t TroubleshootingResult) MarshalJSON() ([]byte, error) {
14835	objectMap := make(map[string]interface{})
14836	populate(objectMap, "code", t.Code)
14837	populate(objectMap, "endTime", (*timeRFC3339)(t.EndTime))
14838	populate(objectMap, "results", t.Results)
14839	populate(objectMap, "startTime", (*timeRFC3339)(t.StartTime))
14840	return json.Marshal(objectMap)
14841}
14842
14843// UnmarshalJSON implements the json.Unmarshaller interface for type TroubleshootingResult.
14844func (t *TroubleshootingResult) UnmarshalJSON(data []byte) error {
14845	var rawMsg map[string]json.RawMessage
14846	if err := json.Unmarshal(data, &rawMsg); err != nil {
14847		return err
14848	}
14849	for key, val := range rawMsg {
14850		var err error
14851		switch key {
14852		case "code":
14853			err = unpopulate(val, &t.Code)
14854			delete(rawMsg, key)
14855		case "endTime":
14856			var aux timeRFC3339
14857			err = unpopulate(val, &aux)
14858			t.EndTime = (*time.Time)(&aux)
14859			delete(rawMsg, key)
14860		case "results":
14861			err = unpopulate(val, &t.Results)
14862			delete(rawMsg, key)
14863		case "startTime":
14864			var aux timeRFC3339
14865			err = unpopulate(val, &aux)
14866			t.StartTime = (*time.Time)(&aux)
14867			delete(rawMsg, key)
14868		}
14869		if err != nil {
14870			return err
14871		}
14872	}
14873	return nil
14874}
14875
14876// TunnelConnectionHealth - VirtualNetworkGatewayConnection properties.
14877type TunnelConnectionHealth struct {
14878	// READ-ONLY; Virtual Network Gateway connection status.
14879	ConnectionStatus *VirtualNetworkGatewayConnectionStatus `json:"connectionStatus,omitempty" azure:"ro"`
14880
14881	// READ-ONLY; The Egress Bytes Transferred in this connection.
14882	EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty" azure:"ro"`
14883
14884	// READ-ONLY; The Ingress Bytes Transferred in this connection.
14885	IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty" azure:"ro"`
14886
14887	// READ-ONLY; The time at which connection was established in Utc format.
14888	LastConnectionEstablishedUTCTime *string `json:"lastConnectionEstablishedUtcTime,omitempty" azure:"ro"`
14889
14890	// READ-ONLY; Tunnel name.
14891	Tunnel *string `json:"tunnel,omitempty" azure:"ro"`
14892}
14893
14894// UnprepareNetworkPoliciesRequest - Details of UnprepareNetworkPolicies for Subnet.
14895type UnprepareNetworkPoliciesRequest struct {
14896	// The name of the service for which subnet is being unprepared for.
14897	ServiceName *string `json:"serviceName,omitempty"`
14898}
14899
14900// Usage - The network resource usage.
14901type Usage struct {
14902	// REQUIRED; The current value of the usage.
14903	CurrentValue *int64 `json:"currentValue,omitempty"`
14904
14905	// REQUIRED; The limit of usage.
14906	Limit *int64 `json:"limit,omitempty"`
14907
14908	// REQUIRED; The name of the type of usage.
14909	Name *UsageName `json:"name,omitempty"`
14910
14911	// REQUIRED; An enum describing the unit of measurement.
14912	Unit *UsageUnit `json:"unit,omitempty"`
14913
14914	// READ-ONLY; Resource identifier.
14915	ID *string `json:"id,omitempty" azure:"ro"`
14916}
14917
14918// UsageName - The usage names.
14919type UsageName struct {
14920	// A localized string describing the resource name.
14921	LocalizedValue *string `json:"localizedValue,omitempty"`
14922
14923	// A string describing the resource name.
14924	Value *string `json:"value,omitempty"`
14925}
14926
14927// UsagesListOptions contains the optional parameters for the Usages.List method.
14928type UsagesListOptions struct {
14929	// placeholder for future optional parameters
14930}
14931
14932// UsagesListResult - The list usages operation response.
14933type UsagesListResult struct {
14934	// URL to get the next set of results.
14935	NextLink *string `json:"nextLink,omitempty"`
14936
14937	// The list network resource usages.
14938	Value []*Usage `json:"value,omitempty"`
14939}
14940
14941// MarshalJSON implements the json.Marshaller interface for type UsagesListResult.
14942func (u UsagesListResult) MarshalJSON() ([]byte, error) {
14943	objectMap := make(map[string]interface{})
14944	populate(objectMap, "nextLink", u.NextLink)
14945	populate(objectMap, "value", u.Value)
14946	return json.Marshal(objectMap)
14947}
14948
14949// VM - Describes a Virtual Machine.
14950type VM struct {
14951	Resource
14952}
14953
14954// VPNClientConfiguration - VpnClientConfiguration for P2S client.
14955type VPNClientConfiguration struct {
14956	// The AADAudience property of the VirtualNetworkGateway resource for vpn client connection used for AAD authentication.
14957	AADAudience *string `json:"aadAudience,omitempty"`
14958
14959	// The AADIssuer property of the VirtualNetworkGateway resource for vpn client connection used for AAD authentication.
14960	AADIssuer *string `json:"aadIssuer,omitempty"`
14961
14962	// The AADTenant property of the VirtualNetworkGateway resource for vpn client connection used for AAD authentication.
14963	AADTenant *string `json:"aadTenant,omitempty"`
14964
14965	// The radius server address property of the VirtualNetworkGateway resource for vpn client connection.
14966	RadiusServerAddress *string `json:"radiusServerAddress,omitempty"`
14967
14968	// The radius secret property of the VirtualNetworkGateway resource for vpn client connection.
14969	RadiusServerSecret *string `json:"radiusServerSecret,omitempty"`
14970
14971	// The radiusServers property for multiple radius server configuration.
14972	RadiusServers []*RadiusServer `json:"radiusServers,omitempty"`
14973
14974	// VPN authentication types for the virtual network gateway..
14975	VPNAuthenticationTypes []*VPNAuthenticationType `json:"vpnAuthenticationTypes,omitempty"`
14976
14977	// The reference to the address space resource which represents Address space for P2S VpnClient.
14978	VPNClientAddressPool *AddressSpace `json:"vpnClientAddressPool,omitempty"`
14979
14980	// VpnClientIpsecPolicies for virtual network gateway P2S client.
14981	VPNClientIPSecPolicies []*IPSecPolicy `json:"vpnClientIpsecPolicies,omitempty"`
14982
14983	// VpnClientProtocols for Virtual network gateway.
14984	VPNClientProtocols []*VPNClientProtocol `json:"vpnClientProtocols,omitempty"`
14985
14986	// VpnClientRevokedCertificate for Virtual network gateway.
14987	VPNClientRevokedCertificates []*VPNClientRevokedCertificate `json:"vpnClientRevokedCertificates,omitempty"`
14988
14989	// VpnClientRootCertificate for virtual network gateway.
14990	VPNClientRootCertificates []*VPNClientRootCertificate `json:"vpnClientRootCertificates,omitempty"`
14991}
14992
14993// MarshalJSON implements the json.Marshaller interface for type VPNClientConfiguration.
14994func (v VPNClientConfiguration) MarshalJSON() ([]byte, error) {
14995	objectMap := make(map[string]interface{})
14996	populate(objectMap, "aadAudience", v.AADAudience)
14997	populate(objectMap, "aadIssuer", v.AADIssuer)
14998	populate(objectMap, "aadTenant", v.AADTenant)
14999	populate(objectMap, "radiusServerAddress", v.RadiusServerAddress)
15000	populate(objectMap, "radiusServerSecret", v.RadiusServerSecret)
15001	populate(objectMap, "radiusServers", v.RadiusServers)
15002	populate(objectMap, "vpnAuthenticationTypes", v.VPNAuthenticationTypes)
15003	populate(objectMap, "vpnClientAddressPool", v.VPNClientAddressPool)
15004	populate(objectMap, "vpnClientIpsecPolicies", v.VPNClientIPSecPolicies)
15005	populate(objectMap, "vpnClientProtocols", v.VPNClientProtocols)
15006	populate(objectMap, "vpnClientRevokedCertificates", v.VPNClientRevokedCertificates)
15007	populate(objectMap, "vpnClientRootCertificates", v.VPNClientRootCertificates)
15008	return json.Marshal(objectMap)
15009}
15010
15011// VPNClientConnectionHealth - VpnClientConnectionHealth properties.
15012type VPNClientConnectionHealth struct {
15013	// List of allocated ip addresses to the connected p2s vpn clients.
15014	AllocatedIPAddresses []*string `json:"allocatedIpAddresses,omitempty"`
15015
15016	// The total of p2s vpn clients connected at this time to this P2SVpnGateway.
15017	VPNClientConnectionsCount *int32 `json:"vpnClientConnectionsCount,omitempty"`
15018
15019	// READ-ONLY; Total of the Egress Bytes Transferred in this connection.
15020	TotalEgressBytesTransferred *int64 `json:"totalEgressBytesTransferred,omitempty" azure:"ro"`
15021
15022	// READ-ONLY; Total of the Ingress Bytes Transferred in this P2S Vpn connection.
15023	TotalIngressBytesTransferred *int64 `json:"totalIngressBytesTransferred,omitempty" azure:"ro"`
15024}
15025
15026// MarshalJSON implements the json.Marshaller interface for type VPNClientConnectionHealth.
15027func (v VPNClientConnectionHealth) MarshalJSON() ([]byte, error) {
15028	objectMap := make(map[string]interface{})
15029	populate(objectMap, "allocatedIpAddresses", v.AllocatedIPAddresses)
15030	populate(objectMap, "totalEgressBytesTransferred", v.TotalEgressBytesTransferred)
15031	populate(objectMap, "totalIngressBytesTransferred", v.TotalIngressBytesTransferred)
15032	populate(objectMap, "vpnClientConnectionsCount", v.VPNClientConnectionsCount)
15033	return json.Marshal(objectMap)
15034}
15035
15036// VPNClientConnectionHealthDetail - VPN client connection health detail.
15037type VPNClientConnectionHealthDetail struct {
15038	// READ-ONLY; The egress bytes per second.
15039	EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty" azure:"ro"`
15040
15041	// READ-ONLY; The egress packets per second.
15042	EgressPacketsTransferred *int64 `json:"egressPacketsTransferred,omitempty" azure:"ro"`
15043
15044	// READ-ONLY; The ingress bytes per second.
15045	IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty" azure:"ro"`
15046
15047	// READ-ONLY; The ingress packets per second.
15048	IngressPacketsTransferred *int64 `json:"ingressPacketsTransferred,omitempty" azure:"ro"`
15049
15050	// READ-ONLY; The max band width.
15051	MaxBandwidth *int64 `json:"maxBandwidth,omitempty" azure:"ro"`
15052
15053	// READ-ONLY; The max packets transferred per second.
15054	MaxPacketsPerSecond *int64 `json:"maxPacketsPerSecond,omitempty" azure:"ro"`
15055
15056	// READ-ONLY; The assigned private Ip of a connected vpn client.
15057	PrivateIPAddress *string `json:"privateIpAddress,omitempty" azure:"ro"`
15058
15059	// READ-ONLY; The public Ip of a connected vpn client.
15060	PublicIPAddress *string `json:"publicIpAddress,omitempty" azure:"ro"`
15061
15062	// READ-ONLY; The duration time of a connected vpn client.
15063	VPNConnectionDuration *int64 `json:"vpnConnectionDuration,omitempty" azure:"ro"`
15064
15065	// READ-ONLY; The vpn client Id.
15066	VPNConnectionID *string `json:"vpnConnectionId,omitempty" azure:"ro"`
15067
15068	// READ-ONLY; The start time of a connected vpn client.
15069	VPNConnectionTime *string `json:"vpnConnectionTime,omitempty" azure:"ro"`
15070
15071	// READ-ONLY; The user name of a connected vpn client.
15072	VPNUserName *string `json:"vpnUserName,omitempty" azure:"ro"`
15073}
15074
15075// VPNClientConnectionHealthDetailListResult - List of virtual network gateway vpn client connection health.
15076type VPNClientConnectionHealthDetailListResult struct {
15077	// List of vpn client connection health.
15078	Value []*VPNClientConnectionHealthDetail `json:"value,omitempty"`
15079}
15080
15081// MarshalJSON implements the json.Marshaller interface for type VPNClientConnectionHealthDetailListResult.
15082func (v VPNClientConnectionHealthDetailListResult) MarshalJSON() ([]byte, error) {
15083	objectMap := make(map[string]interface{})
15084	populate(objectMap, "value", v.Value)
15085	return json.Marshal(objectMap)
15086}
15087
15088// VPNClientIPsecParameters - An IPSec parameters for a virtual network gateway P2S connection.
15089type VPNClientIPsecParameters struct {
15090	// REQUIRED; The DH Group used in IKE Phase 1 for initial SA.
15091	DhGroup *DhGroup `json:"dhGroup,omitempty"`
15092
15093	// REQUIRED; The IPSec encryption algorithm (IKE phase 1).
15094	IPSecEncryption *IPSecEncryption `json:"ipsecEncryption,omitempty"`
15095
15096	// REQUIRED; The IPSec integrity algorithm (IKE phase 1).
15097	IPSecIntegrity *IPSecIntegrity `json:"ipsecIntegrity,omitempty"`
15098
15099	// REQUIRED; The IKE encryption algorithm (IKE phase 2).
15100	IkeEncryption *IkeEncryption `json:"ikeEncryption,omitempty"`
15101
15102	// REQUIRED; The IKE integrity algorithm (IKE phase 2).
15103	IkeIntegrity *IkeIntegrity `json:"ikeIntegrity,omitempty"`
15104
15105	// REQUIRED; The Pfs Group used in IKE Phase 2 for new child SA.
15106	PfsGroup *PfsGroup `json:"pfsGroup,omitempty"`
15107
15108	// REQUIRED; The IPSec Security Association (also called Quick Mode or Phase 2 SA) payload size in KB for P2S client..
15109	SaDataSizeKilobytes *int32 `json:"saDataSizeKilobytes,omitempty"`
15110
15111	// REQUIRED; The IPSec Security Association (also called Quick Mode or Phase 2 SA) lifetime in seconds for P2S client.
15112	SaLifeTimeSeconds *int32 `json:"saLifeTimeSeconds,omitempty"`
15113}
15114
15115// VPNClientParameters - Vpn Client Parameters for package generation.
15116type VPNClientParameters struct {
15117	// VPN client authentication method.
15118	AuthenticationMethod *AuthenticationMethod `json:"authenticationMethod,omitempty"`
15119
15120	// A list of client root certificates public certificate data encoded as Base-64 strings. Optional parameter for external radius based authentication with
15121	// EAPTLS.
15122	ClientRootCertificates []*string `json:"clientRootCertificates,omitempty"`
15123
15124	// VPN client Processor Architecture.
15125	ProcessorArchitecture *ProcessorArchitecture `json:"processorArchitecture,omitempty"`
15126
15127	// The public certificate data for the radius server authentication certificate as a Base-64 encoded string. Required only if external radius authentication
15128	// has been configured with EAPTLS
15129	// authentication.
15130	RadiusServerAuthCertificate *string `json:"radiusServerAuthCertificate,omitempty"`
15131}
15132
15133// MarshalJSON implements the json.Marshaller interface for type VPNClientParameters.
15134func (v VPNClientParameters) MarshalJSON() ([]byte, error) {
15135	objectMap := make(map[string]interface{})
15136	populate(objectMap, "authenticationMethod", v.AuthenticationMethod)
15137	populate(objectMap, "clientRootCertificates", v.ClientRootCertificates)
15138	populate(objectMap, "processorArchitecture", v.ProcessorArchitecture)
15139	populate(objectMap, "radiusServerAuthCertificate", v.RadiusServerAuthCertificate)
15140	return json.Marshal(objectMap)
15141}
15142
15143// VPNClientRevokedCertificate - VPN client revoked certificate of virtual network gateway.
15144type VPNClientRevokedCertificate struct {
15145	SubResource
15146	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
15147	Name *string `json:"name,omitempty"`
15148
15149	// Properties of the vpn client revoked certificate.
15150	Properties *VPNClientRevokedCertificatePropertiesFormat `json:"properties,omitempty"`
15151
15152	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
15153	Etag *string `json:"etag,omitempty" azure:"ro"`
15154}
15155
15156// MarshalJSON implements the json.Marshaller interface for type VPNClientRevokedCertificate.
15157func (v VPNClientRevokedCertificate) MarshalJSON() ([]byte, error) {
15158	objectMap := v.SubResource.marshalInternal()
15159	populate(objectMap, "etag", v.Etag)
15160	populate(objectMap, "name", v.Name)
15161	populate(objectMap, "properties", v.Properties)
15162	return json.Marshal(objectMap)
15163}
15164
15165// VPNClientRevokedCertificatePropertiesFormat - Properties of the revoked VPN client certificate of virtual network gateway.
15166type VPNClientRevokedCertificatePropertiesFormat struct {
15167	// The revoked VPN client certificate thumbprint.
15168	Thumbprint *string `json:"thumbprint,omitempty"`
15169
15170	// READ-ONLY; The provisioning state of the VPN client revoked certificate resource.
15171	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
15172}
15173
15174// VPNClientRootCertificate - VPN client root certificate of virtual network gateway.
15175type VPNClientRootCertificate struct {
15176	SubResource
15177	// REQUIRED; Properties of the vpn client root certificate.
15178	Properties *VPNClientRootCertificatePropertiesFormat `json:"properties,omitempty"`
15179
15180	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
15181	Name *string `json:"name,omitempty"`
15182
15183	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
15184	Etag *string `json:"etag,omitempty" azure:"ro"`
15185}
15186
15187// MarshalJSON implements the json.Marshaller interface for type VPNClientRootCertificate.
15188func (v VPNClientRootCertificate) MarshalJSON() ([]byte, error) {
15189	objectMap := v.SubResource.marshalInternal()
15190	populate(objectMap, "etag", v.Etag)
15191	populate(objectMap, "name", v.Name)
15192	populate(objectMap, "properties", v.Properties)
15193	return json.Marshal(objectMap)
15194}
15195
15196// VPNClientRootCertificatePropertiesFormat - Properties of SSL certificates of application gateway.
15197type VPNClientRootCertificatePropertiesFormat struct {
15198	// REQUIRED; The certificate public data.
15199	PublicCertData *string `json:"publicCertData,omitempty"`
15200
15201	// READ-ONLY; The provisioning state of the VPN client root certificate resource.
15202	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
15203}
15204
15205// VPNConnection - VpnConnection Resource.
15206type VPNConnection struct {
15207	SubResource
15208	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
15209	Name *string `json:"name,omitempty"`
15210
15211	// Properties of the VPN connection.
15212	Properties *VPNConnectionProperties `json:"properties,omitempty"`
15213
15214	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
15215	Etag *string `json:"etag,omitempty" azure:"ro"`
15216}
15217
15218// MarshalJSON implements the json.Marshaller interface for type VPNConnection.
15219func (v VPNConnection) MarshalJSON() ([]byte, error) {
15220	objectMap := v.SubResource.marshalInternal()
15221	populate(objectMap, "etag", v.Etag)
15222	populate(objectMap, "name", v.Name)
15223	populate(objectMap, "properties", v.Properties)
15224	return json.Marshal(objectMap)
15225}
15226
15227// VPNConnectionPacketCaptureStartParameters - Vpn Connection packet capture parameters supplied to start packet capture on gateway connection.
15228type VPNConnectionPacketCaptureStartParameters struct {
15229	// Start Packet capture parameters on vpn connection.
15230	FilterData *string `json:"filterData,omitempty"`
15231
15232	// List of site link connection names.
15233	LinkConnectionNames []*string `json:"linkConnectionNames,omitempty"`
15234}
15235
15236// MarshalJSON implements the json.Marshaller interface for type VPNConnectionPacketCaptureStartParameters.
15237func (v VPNConnectionPacketCaptureStartParameters) MarshalJSON() ([]byte, error) {
15238	objectMap := make(map[string]interface{})
15239	populate(objectMap, "filterData", v.FilterData)
15240	populate(objectMap, "linkConnectionNames", v.LinkConnectionNames)
15241	return json.Marshal(objectMap)
15242}
15243
15244// VPNConnectionPacketCaptureStopParameters - Vpn Connection packet capture parameters supplied to stop packet capture on gateway connection.
15245type VPNConnectionPacketCaptureStopParameters struct {
15246	// List of site link connection names.
15247	LinkConnectionNames []*string `json:"linkConnectionNames,omitempty"`
15248
15249	// SAS url for packet capture on vpn connection.
15250	SasURL *string `json:"sasUrl,omitempty"`
15251}
15252
15253// MarshalJSON implements the json.Marshaller interface for type VPNConnectionPacketCaptureStopParameters.
15254func (v VPNConnectionPacketCaptureStopParameters) MarshalJSON() ([]byte, error) {
15255	objectMap := make(map[string]interface{})
15256	populate(objectMap, "linkConnectionNames", v.LinkConnectionNames)
15257	populate(objectMap, "sasUrl", v.SasURL)
15258	return json.Marshal(objectMap)
15259}
15260
15261// VPNConnectionProperties - Parameters for VpnConnection.
15262type VPNConnectionProperties struct {
15263	// Expected bandwidth in MBPS.
15264	ConnectionBandwidth *int32 `json:"connectionBandwidth,omitempty"`
15265
15266	// DPD timeout in seconds for vpn connection.
15267	DpdTimeoutSeconds *int32 `json:"dpdTimeoutSeconds,omitempty"`
15268
15269	// EnableBgp flag.
15270	EnableBgp *bool `json:"enableBgp,omitempty"`
15271
15272	// Enable internet security.
15273	EnableInternetSecurity *bool `json:"enableInternetSecurity,omitempty"`
15274
15275	// EnableBgp flag.
15276	EnableRateLimiting *bool `json:"enableRateLimiting,omitempty"`
15277
15278	// The IPSec Policies to be considered by this connection.
15279	IPSecPolicies []*IPSecPolicy `json:"ipsecPolicies,omitempty"`
15280
15281	// Id of the connected vpn site.
15282	RemoteVPNSite *SubResource `json:"remoteVpnSite,omitempty"`
15283
15284	// The Routing Configuration indicating the associated and propagated route tables on this connection.
15285	RoutingConfiguration *RoutingConfiguration `json:"routingConfiguration,omitempty"`
15286
15287	// Routing weight for vpn connection.
15288	RoutingWeight *int32 `json:"routingWeight,omitempty"`
15289
15290	// SharedKey for the vpn connection.
15291	SharedKey *string `json:"sharedKey,omitempty"`
15292
15293	// The Traffic Selector Policies to be considered by this connection.
15294	TrafficSelectorPolicies []*TrafficSelectorPolicy `json:"trafficSelectorPolicies,omitempty"`
15295
15296	// Use local azure ip to initiate connection.
15297	UseLocalAzureIPAddress *bool `json:"useLocalAzureIpAddress,omitempty"`
15298
15299	// Enable policy-based traffic selectors.
15300	UsePolicyBasedTrafficSelectors *bool `json:"usePolicyBasedTrafficSelectors,omitempty"`
15301
15302	// Connection protocol used for this connection.
15303	VPNConnectionProtocolType *VirtualNetworkGatewayConnectionProtocol `json:"vpnConnectionProtocolType,omitempty"`
15304
15305	// List of all vpn site link connections to the gateway.
15306	VPNLinkConnections []*VPNSiteLinkConnection `json:"vpnLinkConnections,omitempty"`
15307
15308	// READ-ONLY; The connection status.
15309	ConnectionStatus *VPNConnectionStatus `json:"connectionStatus,omitempty" azure:"ro"`
15310
15311	// READ-ONLY; Egress bytes transferred.
15312	EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty" azure:"ro"`
15313
15314	// READ-ONLY; Ingress bytes transferred.
15315	IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty" azure:"ro"`
15316
15317	// READ-ONLY; The provisioning state of the VPN connection resource.
15318	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
15319}
15320
15321// MarshalJSON implements the json.Marshaller interface for type VPNConnectionProperties.
15322func (v VPNConnectionProperties) MarshalJSON() ([]byte, error) {
15323	objectMap := make(map[string]interface{})
15324	populate(objectMap, "connectionBandwidth", v.ConnectionBandwidth)
15325	populate(objectMap, "connectionStatus", v.ConnectionStatus)
15326	populate(objectMap, "dpdTimeoutSeconds", v.DpdTimeoutSeconds)
15327	populate(objectMap, "egressBytesTransferred", v.EgressBytesTransferred)
15328	populate(objectMap, "enableBgp", v.EnableBgp)
15329	populate(objectMap, "enableInternetSecurity", v.EnableInternetSecurity)
15330	populate(objectMap, "enableRateLimiting", v.EnableRateLimiting)
15331	populate(objectMap, "ipsecPolicies", v.IPSecPolicies)
15332	populate(objectMap, "ingressBytesTransferred", v.IngressBytesTransferred)
15333	populate(objectMap, "provisioningState", v.ProvisioningState)
15334	populate(objectMap, "remoteVpnSite", v.RemoteVPNSite)
15335	populate(objectMap, "routingConfiguration", v.RoutingConfiguration)
15336	populate(objectMap, "routingWeight", v.RoutingWeight)
15337	populate(objectMap, "sharedKey", v.SharedKey)
15338	populate(objectMap, "trafficSelectorPolicies", v.TrafficSelectorPolicies)
15339	populate(objectMap, "useLocalAzureIpAddress", v.UseLocalAzureIPAddress)
15340	populate(objectMap, "usePolicyBasedTrafficSelectors", v.UsePolicyBasedTrafficSelectors)
15341	populate(objectMap, "vpnConnectionProtocolType", v.VPNConnectionProtocolType)
15342	populate(objectMap, "vpnLinkConnections", v.VPNLinkConnections)
15343	return json.Marshal(objectMap)
15344}
15345
15346// VPNConnectionsBeginCreateOrUpdateOptions contains the optional parameters for the VPNConnections.BeginCreateOrUpdate method.
15347type VPNConnectionsBeginCreateOrUpdateOptions struct {
15348	// placeholder for future optional parameters
15349}
15350
15351// VPNConnectionsBeginDeleteOptions contains the optional parameters for the VPNConnections.BeginDelete method.
15352type VPNConnectionsBeginDeleteOptions struct {
15353	// placeholder for future optional parameters
15354}
15355
15356// VPNConnectionsBeginStartPacketCaptureOptions contains the optional parameters for the VPNConnections.BeginStartPacketCapture method.
15357type VPNConnectionsBeginStartPacketCaptureOptions struct {
15358	// Vpn Connection packet capture parameters supplied to start packet capture on gateway connection.
15359	Parameters *VPNConnectionPacketCaptureStartParameters
15360}
15361
15362// VPNConnectionsBeginStopPacketCaptureOptions contains the optional parameters for the VPNConnections.BeginStopPacketCapture method.
15363type VPNConnectionsBeginStopPacketCaptureOptions struct {
15364	// Vpn Connection packet capture parameters supplied to stop packet capture on gateway connection.
15365	Parameters *VPNConnectionPacketCaptureStopParameters
15366}
15367
15368// VPNConnectionsGetOptions contains the optional parameters for the VPNConnections.Get method.
15369type VPNConnectionsGetOptions struct {
15370	// placeholder for future optional parameters
15371}
15372
15373// VPNConnectionsListByVPNGatewayOptions contains the optional parameters for the VPNConnections.ListByVPNGateway method.
15374type VPNConnectionsListByVPNGatewayOptions struct {
15375	// placeholder for future optional parameters
15376}
15377
15378// VPNDeviceScriptParameters - Vpn device configuration script generation parameters.
15379type VPNDeviceScriptParameters struct {
15380	// The device family for the vpn device.
15381	DeviceFamily *string `json:"deviceFamily,omitempty"`
15382
15383	// The firmware version for the vpn device.
15384	FirmwareVersion *string `json:"firmwareVersion,omitempty"`
15385
15386	// The vendor for the vpn device.
15387	Vendor *string `json:"vendor,omitempty"`
15388}
15389
15390// VPNGateway - VpnGateway Resource.
15391type VPNGateway struct {
15392	Resource
15393	// Properties of the VPN gateway.
15394	Properties *VPNGatewayProperties `json:"properties,omitempty"`
15395
15396	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
15397	Etag *string `json:"etag,omitempty" azure:"ro"`
15398}
15399
15400// MarshalJSON implements the json.Marshaller interface for type VPNGateway.
15401func (v VPNGateway) MarshalJSON() ([]byte, error) {
15402	objectMap := v.Resource.marshalInternal()
15403	populate(objectMap, "etag", v.Etag)
15404	populate(objectMap, "properties", v.Properties)
15405	return json.Marshal(objectMap)
15406}
15407
15408// VPNGatewayIPConfiguration - IP Configuration of a VPN Gateway Resource.
15409type VPNGatewayIPConfiguration struct {
15410	// The identifier of the IP configuration for a VPN Gateway.
15411	ID *string `json:"id,omitempty"`
15412
15413	// The private IP address of this IP configuration.
15414	PrivateIPAddress *string `json:"privateIpAddress,omitempty"`
15415
15416	// The public IP address of this IP configuration.
15417	PublicIPAddress *string `json:"publicIpAddress,omitempty"`
15418}
15419
15420// VPNGatewayNatRule - VpnGatewayNatRule Resource.
15421type VPNGatewayNatRule struct {
15422	SubResource
15423	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
15424	Name *string `json:"name,omitempty"`
15425
15426	// Properties of the VpnGateway NAT rule.
15427	Properties *VPNGatewayNatRuleProperties `json:"properties,omitempty"`
15428
15429	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
15430	Etag *string `json:"etag,omitempty" azure:"ro"`
15431
15432	// READ-ONLY; Resource type.
15433	Type *string `json:"type,omitempty" azure:"ro"`
15434}
15435
15436// MarshalJSON implements the json.Marshaller interface for type VPNGatewayNatRule.
15437func (v VPNGatewayNatRule) MarshalJSON() ([]byte, error) {
15438	objectMap := v.SubResource.marshalInternal()
15439	populate(objectMap, "etag", v.Etag)
15440	populate(objectMap, "name", v.Name)
15441	populate(objectMap, "properties", v.Properties)
15442	populate(objectMap, "type", v.Type)
15443	return json.Marshal(objectMap)
15444}
15445
15446// VPNGatewayNatRuleProperties - Parameters for VpnGatewayNatRule.
15447type VPNGatewayNatRuleProperties struct {
15448	// The private IP address external mapping for NAT.
15449	ExternalMappings []*VPNNatRuleMapping `json:"externalMappings,omitempty"`
15450
15451	// The IP Configuration ID this NAT rule applies to.
15452	IPConfigurationID *string `json:"ipConfigurationId,omitempty"`
15453
15454	// The private IP address internal mapping for NAT.
15455	InternalMappings []*VPNNatRuleMapping `json:"internalMappings,omitempty"`
15456
15457	// The Source NAT direction of a VPN NAT.
15458	Mode *VPNNatRuleMode `json:"mode,omitempty"`
15459
15460	// The type of NAT rule for VPN NAT.
15461	Type *VPNNatRuleType `json:"type,omitempty"`
15462
15463	// READ-ONLY; List of egress VpnSiteLinkConnections.
15464	EgressVPNSiteLinkConnections []*SubResource `json:"egressVpnSiteLinkConnections,omitempty" azure:"ro"`
15465
15466	// READ-ONLY; List of ingress VpnSiteLinkConnections.
15467	IngressVPNSiteLinkConnections []*SubResource `json:"ingressVpnSiteLinkConnections,omitempty" azure:"ro"`
15468
15469	// READ-ONLY; The provisioning state of the NAT Rule resource.
15470	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
15471}
15472
15473// MarshalJSON implements the json.Marshaller interface for type VPNGatewayNatRuleProperties.
15474func (v VPNGatewayNatRuleProperties) MarshalJSON() ([]byte, error) {
15475	objectMap := make(map[string]interface{})
15476	populate(objectMap, "egressVpnSiteLinkConnections", v.EgressVPNSiteLinkConnections)
15477	populate(objectMap, "externalMappings", v.ExternalMappings)
15478	populate(objectMap, "ipConfigurationId", v.IPConfigurationID)
15479	populate(objectMap, "ingressVpnSiteLinkConnections", v.IngressVPNSiteLinkConnections)
15480	populate(objectMap, "internalMappings", v.InternalMappings)
15481	populate(objectMap, "mode", v.Mode)
15482	populate(objectMap, "provisioningState", v.ProvisioningState)
15483	populate(objectMap, "type", v.Type)
15484	return json.Marshal(objectMap)
15485}
15486
15487// VPNGatewayPacketCaptureStartParameters - Start packet capture parameters.
15488type VPNGatewayPacketCaptureStartParameters struct {
15489	// Start Packet capture parameters on vpn gateway.
15490	FilterData *string `json:"filterData,omitempty"`
15491}
15492
15493// VPNGatewayPacketCaptureStopParameters - Stop packet capture parameters.
15494type VPNGatewayPacketCaptureStopParameters struct {
15495	// SAS url for packet capture on vpn gateway.
15496	SasURL *string `json:"sasUrl,omitempty"`
15497}
15498
15499// VPNGatewayProperties - Parameters for VpnGateway.
15500type VPNGatewayProperties struct {
15501	// Local network gateway's BGP speaker settings.
15502	BgpSettings *BgpSettings `json:"bgpSettings,omitempty"`
15503
15504	// List of all vpn connections to the gateway.
15505	Connections []*VPNConnection `json:"connections,omitempty"`
15506
15507	// Enable Routing Preference property for the Public IP Interface of the VpnGateway.
15508	IsRoutingPreferenceInternet *bool `json:"isRoutingPreferenceInternet,omitempty"`
15509
15510	// List of all the nat Rules associated with the gateway.
15511	NatRules []*VPNGatewayNatRule `json:"natRules,omitempty"`
15512
15513	// The scale unit for this vpn gateway.
15514	VPNGatewayScaleUnit *int32 `json:"vpnGatewayScaleUnit,omitempty"`
15515
15516	// The VirtualHub to which the gateway belongs.
15517	VirtualHub *SubResource `json:"virtualHub,omitempty"`
15518
15519	// READ-ONLY; List of all IPs configured on the gateway.
15520	IPConfigurations []*VPNGatewayIPConfiguration `json:"ipConfigurations,omitempty" azure:"ro"`
15521
15522	// READ-ONLY; The provisioning state of the VPN gateway resource.
15523	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
15524}
15525
15526// MarshalJSON implements the json.Marshaller interface for type VPNGatewayProperties.
15527func (v VPNGatewayProperties) MarshalJSON() ([]byte, error) {
15528	objectMap := make(map[string]interface{})
15529	populate(objectMap, "bgpSettings", v.BgpSettings)
15530	populate(objectMap, "connections", v.Connections)
15531	populate(objectMap, "ipConfigurations", v.IPConfigurations)
15532	populate(objectMap, "isRoutingPreferenceInternet", v.IsRoutingPreferenceInternet)
15533	populate(objectMap, "natRules", v.NatRules)
15534	populate(objectMap, "provisioningState", v.ProvisioningState)
15535	populate(objectMap, "vpnGatewayScaleUnit", v.VPNGatewayScaleUnit)
15536	populate(objectMap, "virtualHub", v.VirtualHub)
15537	return json.Marshal(objectMap)
15538}
15539
15540// VPNGatewaysBeginCreateOrUpdateOptions contains the optional parameters for the VPNGateways.BeginCreateOrUpdate method.
15541type VPNGatewaysBeginCreateOrUpdateOptions struct {
15542	// placeholder for future optional parameters
15543}
15544
15545// VPNGatewaysBeginDeleteOptions contains the optional parameters for the VPNGateways.BeginDelete method.
15546type VPNGatewaysBeginDeleteOptions struct {
15547	// placeholder for future optional parameters
15548}
15549
15550// VPNGatewaysBeginResetOptions contains the optional parameters for the VPNGateways.BeginReset method.
15551type VPNGatewaysBeginResetOptions struct {
15552	// placeholder for future optional parameters
15553}
15554
15555// VPNGatewaysBeginStartPacketCaptureOptions contains the optional parameters for the VPNGateways.BeginStartPacketCapture method.
15556type VPNGatewaysBeginStartPacketCaptureOptions struct {
15557	// Vpn gateway packet capture parameters supplied to start packet capture on vpn gateway.
15558	Parameters *VPNGatewayPacketCaptureStartParameters
15559}
15560
15561// VPNGatewaysBeginStopPacketCaptureOptions contains the optional parameters for the VPNGateways.BeginStopPacketCapture method.
15562type VPNGatewaysBeginStopPacketCaptureOptions struct {
15563	// Vpn gateway packet capture parameters supplied to stop packet capture on vpn gateway.
15564	Parameters *VPNGatewayPacketCaptureStopParameters
15565}
15566
15567// VPNGatewaysBeginUpdateTagsOptions contains the optional parameters for the VPNGateways.BeginUpdateTags method.
15568type VPNGatewaysBeginUpdateTagsOptions struct {
15569	// placeholder for future optional parameters
15570}
15571
15572// VPNGatewaysGetOptions contains the optional parameters for the VPNGateways.Get method.
15573type VPNGatewaysGetOptions struct {
15574	// placeholder for future optional parameters
15575}
15576
15577// VPNGatewaysListByResourceGroupOptions contains the optional parameters for the VPNGateways.ListByResourceGroup method.
15578type VPNGatewaysListByResourceGroupOptions struct {
15579	// placeholder for future optional parameters
15580}
15581
15582// VPNGatewaysListOptions contains the optional parameters for the VPNGateways.List method.
15583type VPNGatewaysListOptions struct {
15584	// placeholder for future optional parameters
15585}
15586
15587// VPNLinkBgpSettings - BGP settings details for a link.
15588type VPNLinkBgpSettings struct {
15589	// The BGP speaker's ASN.
15590	Asn *int64 `json:"asn,omitempty"`
15591
15592	// The BGP peering address and BGP identifier of this BGP speaker.
15593	BgpPeeringAddress *string `json:"bgpPeeringAddress,omitempty"`
15594}
15595
15596// VPNLinkConnectionsBeginGetIkeSasOptions contains the optional parameters for the VPNLinkConnections.BeginGetIkeSas method.
15597type VPNLinkConnectionsBeginGetIkeSasOptions struct {
15598	// placeholder for future optional parameters
15599}
15600
15601// VPNLinkConnectionsBeginResetConnectionOptions contains the optional parameters for the VPNLinkConnections.BeginResetConnection method.
15602type VPNLinkConnectionsBeginResetConnectionOptions struct {
15603	// placeholder for future optional parameters
15604}
15605
15606// VPNLinkConnectionsListByVPNConnectionOptions contains the optional parameters for the VPNLinkConnections.ListByVPNConnection method.
15607type VPNLinkConnectionsListByVPNConnectionOptions struct {
15608	// placeholder for future optional parameters
15609}
15610
15611// VPNLinkProviderProperties - List of properties of a link provider.
15612type VPNLinkProviderProperties struct {
15613	// Name of the link provider.
15614	LinkProviderName *string `json:"linkProviderName,omitempty"`
15615
15616	// Link speed.
15617	LinkSpeedInMbps *int32 `json:"linkSpeedInMbps,omitempty"`
15618}
15619
15620// VPNNatRuleMapping - Vpn NatRule mapping.
15621type VPNNatRuleMapping struct {
15622	// Address space for Vpn NatRule mapping.
15623	AddressSpace *string `json:"addressSpace,omitempty"`
15624}
15625
15626// VPNPacketCaptureStartParameters - Start packet capture parameters on virtual network gateway.
15627type VPNPacketCaptureStartParameters struct {
15628	// Start Packet capture parameters.
15629	FilterData *string `json:"filterData,omitempty"`
15630}
15631
15632// VPNPacketCaptureStopParameters - Stop packet capture parameters.
15633type VPNPacketCaptureStopParameters struct {
15634	// SAS url for packet capture on virtual network gateway.
15635	SasURL *string `json:"sasUrl,omitempty"`
15636}
15637
15638// VPNProfileResponse - Vpn Profile Response for package generation.
15639type VPNProfileResponse struct {
15640	// URL to the VPN profile.
15641	ProfileURL *string `json:"profileUrl,omitempty"`
15642}
15643
15644// VPNServerConfigRadiusClientRootCertificate - Properties of the Radius client root certificate of VpnServerConfiguration.
15645type VPNServerConfigRadiusClientRootCertificate struct {
15646	// The certificate name.
15647	Name *string `json:"name,omitempty"`
15648
15649	// The Radius client root certificate thumbprint.
15650	Thumbprint *string `json:"thumbprint,omitempty"`
15651}
15652
15653// VPNServerConfigRadiusServerRootCertificate - Properties of Radius Server root certificate of VpnServerConfiguration.
15654type VPNServerConfigRadiusServerRootCertificate struct {
15655	// The certificate name.
15656	Name *string `json:"name,omitempty"`
15657
15658	// The certificate public data.
15659	PublicCertData *string `json:"publicCertData,omitempty"`
15660}
15661
15662// VPNServerConfigVPNClientRevokedCertificate - Properties of the revoked VPN client certificate of VpnServerConfiguration.
15663type VPNServerConfigVPNClientRevokedCertificate struct {
15664	// The certificate name.
15665	Name *string `json:"name,omitempty"`
15666
15667	// The revoked VPN client certificate thumbprint.
15668	Thumbprint *string `json:"thumbprint,omitempty"`
15669}
15670
15671// VPNServerConfigVPNClientRootCertificate - Properties of VPN client root certificate of VpnServerConfiguration.
15672type VPNServerConfigVPNClientRootCertificate struct {
15673	// The certificate name.
15674	Name *string `json:"name,omitempty"`
15675
15676	// The certificate public data.
15677	PublicCertData *string `json:"publicCertData,omitempty"`
15678}
15679
15680// VPNServerConfiguration - VpnServerConfiguration Resource.
15681type VPNServerConfiguration struct {
15682	Resource
15683	// Properties of the P2SVpnServer configuration.
15684	Properties *VPNServerConfigurationProperties `json:"properties,omitempty"`
15685
15686	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
15687	Etag *string `json:"etag,omitempty" azure:"ro"`
15688}
15689
15690// MarshalJSON implements the json.Marshaller interface for type VPNServerConfiguration.
15691func (v VPNServerConfiguration) MarshalJSON() ([]byte, error) {
15692	objectMap := v.Resource.marshalInternal()
15693	populate(objectMap, "etag", v.Etag)
15694	populate(objectMap, "properties", v.Properties)
15695	return json.Marshal(objectMap)
15696}
15697
15698// VPNServerConfigurationProperties - Parameters for VpnServerConfiguration.
15699type VPNServerConfigurationProperties struct {
15700	// The set of aad vpn authentication parameters.
15701	AADAuthenticationParameters *AADAuthenticationParameters `json:"aadAuthenticationParameters,omitempty"`
15702
15703	// The name of the VpnServerConfiguration that is unique within a resource group.
15704	Name *string `json:"name,omitempty"`
15705
15706	// Radius client root certificate of VpnServerConfiguration.
15707	RadiusClientRootCertificates []*VPNServerConfigRadiusClientRootCertificate `json:"radiusClientRootCertificates,omitempty"`
15708
15709	// The radius server address property of the VpnServerConfiguration resource for point to site client connection.
15710	RadiusServerAddress *string `json:"radiusServerAddress,omitempty"`
15711
15712	// Radius Server root certificate of VpnServerConfiguration.
15713	RadiusServerRootCertificates []*VPNServerConfigRadiusServerRootCertificate `json:"radiusServerRootCertificates,omitempty"`
15714
15715	// The radius secret property of the VpnServerConfiguration resource for point to site client connection.
15716	RadiusServerSecret *string `json:"radiusServerSecret,omitempty"`
15717
15718	// Multiple Radius Server configuration for VpnServerConfiguration.
15719	RadiusServers []*RadiusServer `json:"radiusServers,omitempty"`
15720
15721	// VPN authentication types for the VpnServerConfiguration.
15722	VPNAuthenticationTypes []*VPNAuthenticationType `json:"vpnAuthenticationTypes,omitempty"`
15723
15724	// VpnClientIpsecPolicies for VpnServerConfiguration.
15725	VPNClientIPSecPolicies []*IPSecPolicy `json:"vpnClientIpsecPolicies,omitempty"`
15726
15727	// VPN client revoked certificate of VpnServerConfiguration.
15728	VPNClientRevokedCertificates []*VPNServerConfigVPNClientRevokedCertificate `json:"vpnClientRevokedCertificates,omitempty"`
15729
15730	// VPN client root certificate of VpnServerConfiguration.
15731	VPNClientRootCertificates []*VPNServerConfigVPNClientRootCertificate `json:"vpnClientRootCertificates,omitempty"`
15732
15733	// VPN protocols for the VpnServerConfiguration.
15734	VPNProtocols []*VPNGatewayTunnelingProtocol `json:"vpnProtocols,omitempty"`
15735
15736	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
15737	Etag *string `json:"etag,omitempty" azure:"ro"`
15738
15739	// READ-ONLY; List of references to P2SVpnGateways.
15740	P2SVPNGateways []*P2SVPNGateway `json:"p2SVpnGateways,omitempty" azure:"ro"`
15741
15742	// READ-ONLY; The provisioning state of the VpnServerConfiguration resource. Possible values are: 'Updating', 'Deleting', and 'Failed'.
15743	ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"`
15744}
15745
15746// MarshalJSON implements the json.Marshaller interface for type VPNServerConfigurationProperties.
15747func (v VPNServerConfigurationProperties) MarshalJSON() ([]byte, error) {
15748	objectMap := make(map[string]interface{})
15749	populate(objectMap, "aadAuthenticationParameters", v.AADAuthenticationParameters)
15750	populate(objectMap, "etag", v.Etag)
15751	populate(objectMap, "name", v.Name)
15752	populate(objectMap, "p2SVpnGateways", v.P2SVPNGateways)
15753	populate(objectMap, "provisioningState", v.ProvisioningState)
15754	populate(objectMap, "radiusClientRootCertificates", v.RadiusClientRootCertificates)
15755	populate(objectMap, "radiusServerAddress", v.RadiusServerAddress)
15756	populate(objectMap, "radiusServerRootCertificates", v.RadiusServerRootCertificates)
15757	populate(objectMap, "radiusServerSecret", v.RadiusServerSecret)
15758	populate(objectMap, "radiusServers", v.RadiusServers)
15759	populate(objectMap, "vpnAuthenticationTypes", v.VPNAuthenticationTypes)
15760	populate(objectMap, "vpnClientIpsecPolicies", v.VPNClientIPSecPolicies)
15761	populate(objectMap, "vpnClientRevokedCertificates", v.VPNClientRevokedCertificates)
15762	populate(objectMap, "vpnClientRootCertificates", v.VPNClientRootCertificates)
15763	populate(objectMap, "vpnProtocols", v.VPNProtocols)
15764	return json.Marshal(objectMap)
15765}
15766
15767// VPNServerConfigurationsAssociatedWithVirtualWanBeginListOptions contains the optional parameters for the VPNServerConfigurationsAssociatedWithVirtualWan.BeginList
15768// method.
15769type VPNServerConfigurationsAssociatedWithVirtualWanBeginListOptions struct {
15770	// placeholder for future optional parameters
15771}
15772
15773// VPNServerConfigurationsBeginCreateOrUpdateOptions contains the optional parameters for the VPNServerConfigurations.BeginCreateOrUpdate method.
15774type VPNServerConfigurationsBeginCreateOrUpdateOptions struct {
15775	// placeholder for future optional parameters
15776}
15777
15778// VPNServerConfigurationsBeginDeleteOptions contains the optional parameters for the VPNServerConfigurations.BeginDelete method.
15779type VPNServerConfigurationsBeginDeleteOptions struct {
15780	// placeholder for future optional parameters
15781}
15782
15783// VPNServerConfigurationsGetOptions contains the optional parameters for the VPNServerConfigurations.Get method.
15784type VPNServerConfigurationsGetOptions struct {
15785	// placeholder for future optional parameters
15786}
15787
15788// VPNServerConfigurationsListByResourceGroupOptions contains the optional parameters for the VPNServerConfigurations.ListByResourceGroup method.
15789type VPNServerConfigurationsListByResourceGroupOptions struct {
15790	// placeholder for future optional parameters
15791}
15792
15793// VPNServerConfigurationsListOptions contains the optional parameters for the VPNServerConfigurations.List method.
15794type VPNServerConfigurationsListOptions struct {
15795	// placeholder for future optional parameters
15796}
15797
15798// VPNServerConfigurationsResponse - VpnServerConfigurations list associated with VirtualWan Response.
15799type VPNServerConfigurationsResponse struct {
15800	// List of VpnServerConfigurations associated with VirtualWan.
15801	VPNServerConfigurationResourceIDs []*string `json:"vpnServerConfigurationResourceIds,omitempty"`
15802}
15803
15804// MarshalJSON implements the json.Marshaller interface for type VPNServerConfigurationsResponse.
15805func (v VPNServerConfigurationsResponse) MarshalJSON() ([]byte, error) {
15806	objectMap := make(map[string]interface{})
15807	populate(objectMap, "vpnServerConfigurationResourceIds", v.VPNServerConfigurationResourceIDs)
15808	return json.Marshal(objectMap)
15809}
15810
15811// VPNServerConfigurationsUpdateTagsOptions contains the optional parameters for the VPNServerConfigurations.UpdateTags method.
15812type VPNServerConfigurationsUpdateTagsOptions struct {
15813	// placeholder for future optional parameters
15814}
15815
15816// VPNSite - VpnSite Resource.
15817type VPNSite struct {
15818	Resource
15819	// Properties of the VPN site.
15820	Properties *VPNSiteProperties `json:"properties,omitempty"`
15821
15822	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
15823	Etag *string `json:"etag,omitempty" azure:"ro"`
15824}
15825
15826// MarshalJSON implements the json.Marshaller interface for type VPNSite.
15827func (v VPNSite) MarshalJSON() ([]byte, error) {
15828	objectMap := v.Resource.marshalInternal()
15829	populate(objectMap, "etag", v.Etag)
15830	populate(objectMap, "properties", v.Properties)
15831	return json.Marshal(objectMap)
15832}
15833
15834// VPNSiteID - VpnSite Resource.
15835type VPNSiteID struct {
15836	// READ-ONLY; The resource-uri of the vpn-site for which config is to be fetched.
15837	VPNSite *string `json:"vpnSite,omitempty" azure:"ro"`
15838}
15839
15840// VPNSiteLink - VpnSiteLink Resource.
15841type VPNSiteLink struct {
15842	SubResource
15843	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
15844	Name *string `json:"name,omitempty"`
15845
15846	// Properties of the VPN site link.
15847	Properties *VPNSiteLinkProperties `json:"properties,omitempty"`
15848
15849	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
15850	Etag *string `json:"etag,omitempty" azure:"ro"`
15851
15852	// READ-ONLY; Resource type.
15853	Type *string `json:"type,omitempty" azure:"ro"`
15854}
15855
15856// MarshalJSON implements the json.Marshaller interface for type VPNSiteLink.
15857func (v VPNSiteLink) MarshalJSON() ([]byte, error) {
15858	objectMap := v.SubResource.marshalInternal()
15859	populate(objectMap, "etag", v.Etag)
15860	populate(objectMap, "name", v.Name)
15861	populate(objectMap, "properties", v.Properties)
15862	populate(objectMap, "type", v.Type)
15863	return json.Marshal(objectMap)
15864}
15865
15866// VPNSiteLinkConnection - VpnSiteLinkConnection Resource.
15867type VPNSiteLinkConnection struct {
15868	SubResource
15869	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
15870	Name *string `json:"name,omitempty"`
15871
15872	// Properties of the VPN site link connection.
15873	Properties *VPNSiteLinkConnectionProperties `json:"properties,omitempty"`
15874
15875	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
15876	Etag *string `json:"etag,omitempty" azure:"ro"`
15877
15878	// READ-ONLY; Resource type.
15879	Type *string `json:"type,omitempty" azure:"ro"`
15880}
15881
15882// MarshalJSON implements the json.Marshaller interface for type VPNSiteLinkConnection.
15883func (v VPNSiteLinkConnection) MarshalJSON() ([]byte, error) {
15884	objectMap := v.SubResource.marshalInternal()
15885	populate(objectMap, "etag", v.Etag)
15886	populate(objectMap, "name", v.Name)
15887	populate(objectMap, "properties", v.Properties)
15888	populate(objectMap, "type", v.Type)
15889	return json.Marshal(objectMap)
15890}
15891
15892// VPNSiteLinkConnectionProperties - Parameters for VpnConnection.
15893type VPNSiteLinkConnectionProperties struct {
15894	// Expected bandwidth in MBPS.
15895	ConnectionBandwidth *int32 `json:"connectionBandwidth,omitempty"`
15896
15897	// List of egress NatRules.
15898	EgressNatRules []*SubResource `json:"egressNatRules,omitempty"`
15899
15900	// EnableBgp flag.
15901	EnableBgp *bool `json:"enableBgp,omitempty"`
15902
15903	// EnableBgp flag.
15904	EnableRateLimiting *bool `json:"enableRateLimiting,omitempty"`
15905
15906	// The IPSec Policies to be considered by this connection.
15907	IPSecPolicies []*IPSecPolicy `json:"ipsecPolicies,omitempty"`
15908
15909	// List of ingress NatRules.
15910	IngressNatRules []*SubResource `json:"ingressNatRules,omitempty"`
15911
15912	// Routing weight for vpn connection.
15913	RoutingWeight *int32 `json:"routingWeight,omitempty"`
15914
15915	// SharedKey for the vpn connection.
15916	SharedKey *string `json:"sharedKey,omitempty"`
15917
15918	// Use local azure ip to initiate connection.
15919	UseLocalAzureIPAddress *bool `json:"useLocalAzureIpAddress,omitempty"`
15920
15921	// Enable policy-based traffic selectors.
15922	UsePolicyBasedTrafficSelectors *bool `json:"usePolicyBasedTrafficSelectors,omitempty"`
15923
15924	// Connection protocol used for this connection.
15925	VPNConnectionProtocolType *VirtualNetworkGatewayConnectionProtocol `json:"vpnConnectionProtocolType,omitempty"`
15926
15927	// Vpn link connection mode.
15928	VPNLinkConnectionMode *VPNLinkConnectionMode `json:"vpnLinkConnectionMode,omitempty"`
15929
15930	// Id of the connected vpn site link.
15931	VPNSiteLink *SubResource `json:"vpnSiteLink,omitempty"`
15932
15933	// READ-ONLY; The connection status.
15934	ConnectionStatus *VPNConnectionStatus `json:"connectionStatus,omitempty" azure:"ro"`
15935
15936	// READ-ONLY; Egress bytes transferred.
15937	EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty" azure:"ro"`
15938
15939	// READ-ONLY; Ingress bytes transferred.
15940	IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty" azure:"ro"`
15941
15942	// READ-ONLY; The provisioning state of the VPN site link connection resource.
15943	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
15944}
15945
15946// MarshalJSON implements the json.Marshaller interface for type VPNSiteLinkConnectionProperties.
15947func (v VPNSiteLinkConnectionProperties) MarshalJSON() ([]byte, error) {
15948	objectMap := make(map[string]interface{})
15949	populate(objectMap, "connectionBandwidth", v.ConnectionBandwidth)
15950	populate(objectMap, "connectionStatus", v.ConnectionStatus)
15951	populate(objectMap, "egressBytesTransferred", v.EgressBytesTransferred)
15952	populate(objectMap, "egressNatRules", v.EgressNatRules)
15953	populate(objectMap, "enableBgp", v.EnableBgp)
15954	populate(objectMap, "enableRateLimiting", v.EnableRateLimiting)
15955	populate(objectMap, "ipsecPolicies", v.IPSecPolicies)
15956	populate(objectMap, "ingressBytesTransferred", v.IngressBytesTransferred)
15957	populate(objectMap, "ingressNatRules", v.IngressNatRules)
15958	populate(objectMap, "provisioningState", v.ProvisioningState)
15959	populate(objectMap, "routingWeight", v.RoutingWeight)
15960	populate(objectMap, "sharedKey", v.SharedKey)
15961	populate(objectMap, "useLocalAzureIpAddress", v.UseLocalAzureIPAddress)
15962	populate(objectMap, "usePolicyBasedTrafficSelectors", v.UsePolicyBasedTrafficSelectors)
15963	populate(objectMap, "vpnConnectionProtocolType", v.VPNConnectionProtocolType)
15964	populate(objectMap, "vpnLinkConnectionMode", v.VPNLinkConnectionMode)
15965	populate(objectMap, "vpnSiteLink", v.VPNSiteLink)
15966	return json.Marshal(objectMap)
15967}
15968
15969// VPNSiteLinkConnectionsGetOptions contains the optional parameters for the VPNSiteLinkConnections.Get method.
15970type VPNSiteLinkConnectionsGetOptions struct {
15971	// placeholder for future optional parameters
15972}
15973
15974// VPNSiteLinkProperties - Parameters for VpnSite.
15975type VPNSiteLinkProperties struct {
15976	// The set of bgp properties.
15977	BgpProperties *VPNLinkBgpSettings `json:"bgpProperties,omitempty"`
15978
15979	// FQDN of vpn-site-link.
15980	Fqdn *string `json:"fqdn,omitempty"`
15981
15982	// The ip-address for the vpn-site-link.
15983	IPAddress *string `json:"ipAddress,omitempty"`
15984
15985	// The link provider properties.
15986	LinkProperties *VPNLinkProviderProperties `json:"linkProperties,omitempty"`
15987
15988	// READ-ONLY; The provisioning state of the VPN site link resource.
15989	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
15990}
15991
15992// VPNSiteLinksGetOptions contains the optional parameters for the VPNSiteLinks.Get method.
15993type VPNSiteLinksGetOptions struct {
15994	// placeholder for future optional parameters
15995}
15996
15997// VPNSiteLinksListByVPNSiteOptions contains the optional parameters for the VPNSiteLinks.ListByVPNSite method.
15998type VPNSiteLinksListByVPNSiteOptions struct {
15999	// placeholder for future optional parameters
16000}
16001
16002// VPNSiteProperties - Parameters for VpnSite.
16003type VPNSiteProperties struct {
16004	// The AddressSpace that contains an array of IP address ranges.
16005	AddressSpace *AddressSpace `json:"addressSpace,omitempty"`
16006
16007	// The set of bgp properties.
16008	BgpProperties *BgpSettings `json:"bgpProperties,omitempty"`
16009
16010	// The device properties.
16011	DeviceProperties *DeviceProperties `json:"deviceProperties,omitempty"`
16012
16013	// The ip-address for the vpn-site.
16014	IPAddress *string `json:"ipAddress,omitempty"`
16015
16016	// IsSecuritySite flag.
16017	IsSecuritySite *bool `json:"isSecuritySite,omitempty"`
16018
16019	// Office365 Policy.
16020	O365Policy *O365PolicyProperties `json:"o365Policy,omitempty"`
16021
16022	// The key for vpn-site that can be used for connections.
16023	SiteKey *string `json:"siteKey,omitempty"`
16024
16025	// List of all vpn site links.
16026	VPNSiteLinks []*VPNSiteLink `json:"vpnSiteLinks,omitempty"`
16027
16028	// The VirtualWAN to which the vpnSite belongs.
16029	VirtualWan *SubResource `json:"virtualWan,omitempty"`
16030
16031	// READ-ONLY; The provisioning state of the VPN site resource.
16032	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
16033}
16034
16035// MarshalJSON implements the json.Marshaller interface for type VPNSiteProperties.
16036func (v VPNSiteProperties) MarshalJSON() ([]byte, error) {
16037	objectMap := make(map[string]interface{})
16038	populate(objectMap, "addressSpace", v.AddressSpace)
16039	populate(objectMap, "bgpProperties", v.BgpProperties)
16040	populate(objectMap, "deviceProperties", v.DeviceProperties)
16041	populate(objectMap, "ipAddress", v.IPAddress)
16042	populate(objectMap, "isSecuritySite", v.IsSecuritySite)
16043	populate(objectMap, "o365Policy", v.O365Policy)
16044	populate(objectMap, "provisioningState", v.ProvisioningState)
16045	populate(objectMap, "siteKey", v.SiteKey)
16046	populate(objectMap, "vpnSiteLinks", v.VPNSiteLinks)
16047	populate(objectMap, "virtualWan", v.VirtualWan)
16048	return json.Marshal(objectMap)
16049}
16050
16051// VPNSitesBeginCreateOrUpdateOptions contains the optional parameters for the VPNSites.BeginCreateOrUpdate method.
16052type VPNSitesBeginCreateOrUpdateOptions struct {
16053	// placeholder for future optional parameters
16054}
16055
16056// VPNSitesBeginDeleteOptions contains the optional parameters for the VPNSites.BeginDelete method.
16057type VPNSitesBeginDeleteOptions struct {
16058	// placeholder for future optional parameters
16059}
16060
16061// VPNSitesConfigurationBeginDownloadOptions contains the optional parameters for the VPNSitesConfiguration.BeginDownload method.
16062type VPNSitesConfigurationBeginDownloadOptions struct {
16063	// placeholder for future optional parameters
16064}
16065
16066// VPNSitesGetOptions contains the optional parameters for the VPNSites.Get method.
16067type VPNSitesGetOptions struct {
16068	// placeholder for future optional parameters
16069}
16070
16071// VPNSitesListByResourceGroupOptions contains the optional parameters for the VPNSites.ListByResourceGroup method.
16072type VPNSitesListByResourceGroupOptions struct {
16073	// placeholder for future optional parameters
16074}
16075
16076// VPNSitesListOptions contains the optional parameters for the VPNSites.List method.
16077type VPNSitesListOptions struct {
16078	// placeholder for future optional parameters
16079}
16080
16081// VPNSitesUpdateTagsOptions contains the optional parameters for the VPNSites.UpdateTags method.
16082type VPNSitesUpdateTagsOptions struct {
16083	// placeholder for future optional parameters
16084}
16085
16086// VerificationIPFlowParameters - Parameters that define the IP flow to be verified.
16087type VerificationIPFlowParameters struct {
16088	// REQUIRED; The direction of the packet represented as a 5-tuple.
16089	Direction *Direction `json:"direction,omitempty"`
16090
16091	// REQUIRED; The local IP address. Acceptable values are valid IPv4 addresses.
16092	LocalIPAddress *string `json:"localIPAddress,omitempty"`
16093
16094	// REQUIRED; The local port. Acceptable values are a single integer in the range (0-65535). Support for * for the source port, which depends on the direction.
16095	LocalPort *string `json:"localPort,omitempty"`
16096
16097	// REQUIRED; Protocol to be verified on.
16098	Protocol *IPFlowProtocol `json:"protocol,omitempty"`
16099
16100	// REQUIRED; The remote IP address. Acceptable values are valid IPv4 addresses.
16101	RemoteIPAddress *string `json:"remoteIPAddress,omitempty"`
16102
16103	// REQUIRED; The remote port. Acceptable values are a single integer in the range (0-65535). Support for * for the source port, which depends on the direction.
16104	RemotePort *string `json:"remotePort,omitempty"`
16105
16106	// REQUIRED; The ID of the target resource to perform next-hop on.
16107	TargetResourceID *string `json:"targetResourceId,omitempty"`
16108
16109	// The NIC ID. (If VM has multiple NICs and IP forwarding is enabled on any of them, then this parameter must be specified. Otherwise optional).
16110	TargetNicResourceID *string `json:"targetNicResourceId,omitempty"`
16111}
16112
16113// VerificationIPFlowResult - Results of IP flow verification on the target resource.
16114type VerificationIPFlowResult struct {
16115	// Indicates whether the traffic is allowed or denied.
16116	Access *Access `json:"access,omitempty"`
16117
16118	// Name of the rule. If input is not matched against any security rule, it is not displayed.
16119	RuleName *string `json:"ruleName,omitempty"`
16120}
16121
16122// VirtualApplianceNicProperties - Network Virtual Appliance NIC properties.
16123type VirtualApplianceNicProperties struct {
16124	// READ-ONLY; NIC name.
16125	Name *string `json:"name,omitempty" azure:"ro"`
16126
16127	// READ-ONLY; Private IP address.
16128	PrivateIPAddress *string `json:"privateIpAddress,omitempty" azure:"ro"`
16129
16130	// READ-ONLY; Public IP address.
16131	PublicIPAddress *string `json:"publicIpAddress,omitempty" azure:"ro"`
16132}
16133
16134// VirtualApplianceSKUProperties - Network Virtual Appliance Sku Properties.
16135type VirtualApplianceSKUProperties struct {
16136	// Virtual Appliance Scale Unit.
16137	BundledScaleUnit *string `json:"bundledScaleUnit,omitempty"`
16138
16139	// Virtual Appliance Version.
16140	MarketPlaceVersion *string `json:"marketPlaceVersion,omitempty"`
16141
16142	// Virtual Appliance Vendor.
16143	Vendor *string `json:"vendor,omitempty"`
16144}
16145
16146// VirtualApplianceSKUsGetOptions contains the optional parameters for the VirtualApplianceSKUs.Get method.
16147type VirtualApplianceSKUsGetOptions struct {
16148	// placeholder for future optional parameters
16149}
16150
16151// VirtualApplianceSKUsListOptions contains the optional parameters for the VirtualApplianceSKUs.List method.
16152type VirtualApplianceSKUsListOptions struct {
16153	// placeholder for future optional parameters
16154}
16155
16156// VirtualApplianceSite - Virtual Appliance Site resource.
16157type VirtualApplianceSite struct {
16158	SubResource
16159	// Name of the virtual appliance site.
16160	Name *string `json:"name,omitempty"`
16161
16162	// The properties of the Virtual Appliance Sites.
16163	Properties *VirtualApplianceSiteProperties `json:"properties,omitempty"`
16164
16165	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
16166	Etag *string `json:"etag,omitempty" azure:"ro"`
16167
16168	// READ-ONLY; Site type.
16169	Type *string `json:"type,omitempty" azure:"ro"`
16170}
16171
16172// MarshalJSON implements the json.Marshaller interface for type VirtualApplianceSite.
16173func (v VirtualApplianceSite) MarshalJSON() ([]byte, error) {
16174	objectMap := v.SubResource.marshalInternal()
16175	populate(objectMap, "etag", v.Etag)
16176	populate(objectMap, "name", v.Name)
16177	populate(objectMap, "properties", v.Properties)
16178	populate(objectMap, "type", v.Type)
16179	return json.Marshal(objectMap)
16180}
16181
16182// VirtualApplianceSiteProperties - Properties of the rule group.
16183type VirtualApplianceSiteProperties struct {
16184	// Address Prefix.
16185	AddressPrefix *string `json:"addressPrefix,omitempty"`
16186
16187	// Office 365 Policy.
16188	O365Policy *Office365PolicyProperties `json:"o365Policy,omitempty"`
16189
16190	// READ-ONLY; The provisioning state of the resource.
16191	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
16192}
16193
16194// VirtualApplianceSitesBeginCreateOrUpdateOptions contains the optional parameters for the VirtualApplianceSites.BeginCreateOrUpdate method.
16195type VirtualApplianceSitesBeginCreateOrUpdateOptions struct {
16196	// placeholder for future optional parameters
16197}
16198
16199// VirtualApplianceSitesBeginDeleteOptions contains the optional parameters for the VirtualApplianceSites.BeginDelete method.
16200type VirtualApplianceSitesBeginDeleteOptions struct {
16201	// placeholder for future optional parameters
16202}
16203
16204// VirtualApplianceSitesGetOptions contains the optional parameters for the VirtualApplianceSites.Get method.
16205type VirtualApplianceSitesGetOptions struct {
16206	// placeholder for future optional parameters
16207}
16208
16209// VirtualApplianceSitesListOptions contains the optional parameters for the VirtualApplianceSites.List method.
16210type VirtualApplianceSitesListOptions struct {
16211	// placeholder for future optional parameters
16212}
16213
16214// VirtualHub Resource.
16215type VirtualHub struct {
16216	Resource
16217	// Properties of the virtual hub.
16218	Properties *VirtualHubProperties `json:"properties,omitempty"`
16219
16220	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
16221	Etag *string `json:"etag,omitempty" azure:"ro"`
16222}
16223
16224// MarshalJSON implements the json.Marshaller interface for type VirtualHub.
16225func (v VirtualHub) MarshalJSON() ([]byte, error) {
16226	objectMap := v.Resource.marshalInternal()
16227	populate(objectMap, "etag", v.Etag)
16228	populate(objectMap, "properties", v.Properties)
16229	return json.Marshal(objectMap)
16230}
16231
16232// VirtualHubBgpConnectionBeginCreateOrUpdateOptions contains the optional parameters for the VirtualHubBgpConnection.BeginCreateOrUpdate method.
16233type VirtualHubBgpConnectionBeginCreateOrUpdateOptions struct {
16234	// placeholder for future optional parameters
16235}
16236
16237// VirtualHubBgpConnectionBeginDeleteOptions contains the optional parameters for the VirtualHubBgpConnection.BeginDelete method.
16238type VirtualHubBgpConnectionBeginDeleteOptions struct {
16239	// placeholder for future optional parameters
16240}
16241
16242// VirtualHubBgpConnectionGetOptions contains the optional parameters for the VirtualHubBgpConnection.Get method.
16243type VirtualHubBgpConnectionGetOptions struct {
16244	// placeholder for future optional parameters
16245}
16246
16247// VirtualHubBgpConnectionsBeginListAdvertisedRoutesOptions contains the optional parameters for the VirtualHubBgpConnections.BeginListAdvertisedRoutes
16248// method.
16249type VirtualHubBgpConnectionsBeginListAdvertisedRoutesOptions struct {
16250	// placeholder for future optional parameters
16251}
16252
16253// VirtualHubBgpConnectionsBeginListLearnedRoutesOptions contains the optional parameters for the VirtualHubBgpConnections.BeginListLearnedRoutes method.
16254type VirtualHubBgpConnectionsBeginListLearnedRoutesOptions struct {
16255	// placeholder for future optional parameters
16256}
16257
16258// VirtualHubBgpConnectionsListOptions contains the optional parameters for the VirtualHubBgpConnections.List method.
16259type VirtualHubBgpConnectionsListOptions struct {
16260	// placeholder for future optional parameters
16261}
16262
16263// VirtualHubEffectiveRoute - The effective route configured on the virtual hub or specified resource.
16264type VirtualHubEffectiveRoute struct {
16265	// The list of address prefixes.
16266	AddressPrefixes []*string `json:"addressPrefixes,omitempty"`
16267
16268	// The ASPath of this route.
16269	AsPath *string `json:"asPath,omitempty"`
16270
16271	// The type of the next hop.
16272	NextHopType *string `json:"nextHopType,omitempty"`
16273
16274	// The list of next hops.
16275	NextHops []*string `json:"nextHops,omitempty"`
16276
16277	// The origin of this route.
16278	RouteOrigin *string `json:"routeOrigin,omitempty"`
16279}
16280
16281// MarshalJSON implements the json.Marshaller interface for type VirtualHubEffectiveRoute.
16282func (v VirtualHubEffectiveRoute) MarshalJSON() ([]byte, error) {
16283	objectMap := make(map[string]interface{})
16284	populate(objectMap, "addressPrefixes", v.AddressPrefixes)
16285	populate(objectMap, "asPath", v.AsPath)
16286	populate(objectMap, "nextHopType", v.NextHopType)
16287	populate(objectMap, "nextHops", v.NextHops)
16288	populate(objectMap, "routeOrigin", v.RouteOrigin)
16289	return json.Marshal(objectMap)
16290}
16291
16292// VirtualHubEffectiveRouteList - EffectiveRoutes List.
16293type VirtualHubEffectiveRouteList struct {
16294	// The list of effective routes configured on the virtual hub or the specified resource.
16295	Value []*VirtualHubEffectiveRoute `json:"value,omitempty"`
16296}
16297
16298// MarshalJSON implements the json.Marshaller interface for type VirtualHubEffectiveRouteList.
16299func (v VirtualHubEffectiveRouteList) MarshalJSON() ([]byte, error) {
16300	objectMap := make(map[string]interface{})
16301	populate(objectMap, "value", v.Value)
16302	return json.Marshal(objectMap)
16303}
16304
16305// VirtualHubID - Virtual Hub identifier.
16306type VirtualHubID struct {
16307	// The resource URI for the Virtual Hub where the ExpressRoute gateway is or will be deployed. The Virtual Hub resource and the ExpressRoute gateway resource
16308	// reside in the same subscription.
16309	ID *string `json:"id,omitempty"`
16310}
16311
16312// VirtualHubIPConfigurationBeginCreateOrUpdateOptions contains the optional parameters for the VirtualHubIPConfiguration.BeginCreateOrUpdate method.
16313type VirtualHubIPConfigurationBeginCreateOrUpdateOptions struct {
16314	// placeholder for future optional parameters
16315}
16316
16317// VirtualHubIPConfigurationBeginDeleteOptions contains the optional parameters for the VirtualHubIPConfiguration.BeginDelete method.
16318type VirtualHubIPConfigurationBeginDeleteOptions struct {
16319	// placeholder for future optional parameters
16320}
16321
16322// VirtualHubIPConfigurationGetOptions contains the optional parameters for the VirtualHubIPConfiguration.Get method.
16323type VirtualHubIPConfigurationGetOptions struct {
16324	// placeholder for future optional parameters
16325}
16326
16327// VirtualHubIPConfigurationListOptions contains the optional parameters for the VirtualHubIPConfiguration.List method.
16328type VirtualHubIPConfigurationListOptions struct {
16329	// placeholder for future optional parameters
16330}
16331
16332// VirtualHubProperties - Parameters for VirtualHub.
16333type VirtualHubProperties struct {
16334	// Address-prefix for this VirtualHub.
16335	AddressPrefix *string `json:"addressPrefix,omitempty"`
16336
16337	// Flag to control transit for VirtualRouter hub.
16338	AllowBranchToBranchTraffic *bool `json:"allowBranchToBranchTraffic,omitempty"`
16339
16340	// The azureFirewall associated with this VirtualHub.
16341	AzureFirewall *SubResource `json:"azureFirewall,omitempty"`
16342
16343	// The expressRouteGateway associated with this VirtualHub.
16344	ExpressRouteGateway *SubResource `json:"expressRouteGateway,omitempty"`
16345
16346	// The P2SVpnGateway associated with this VirtualHub.
16347	P2SVPNGateway *SubResource `json:"p2SVpnGateway,omitempty"`
16348
16349	// The preferred gateway to route on-prem traffic
16350	PreferredRoutingGateway *PreferredRoutingGateway `json:"preferredRoutingGateway,omitempty"`
16351
16352	// The routeTable associated with this virtual hub.
16353	RouteTable *VirtualHubRouteTable `json:"routeTable,omitempty"`
16354
16355	// The sku of this VirtualHub.
16356	SKU *string `json:"sku,omitempty"`
16357
16358	// The securityPartnerProvider associated with this VirtualHub.
16359	SecurityPartnerProvider *SubResource `json:"securityPartnerProvider,omitempty"`
16360
16361	// The Security Provider name.
16362	SecurityProviderName *string `json:"securityProviderName,omitempty"`
16363
16364	// The VpnGateway associated with this VirtualHub.
16365	VPNGateway *SubResource `json:"vpnGateway,omitempty"`
16366
16367	// List of all virtual hub route table v2s associated with this VirtualHub.
16368	VirtualHubRouteTableV2S []*VirtualHubRouteTableV2 `json:"virtualHubRouteTableV2s,omitempty"`
16369
16370	// VirtualRouter ASN.
16371	VirtualRouterAsn *int64 `json:"virtualRouterAsn,omitempty"`
16372
16373	// VirtualRouter IPs.
16374	VirtualRouterIPs []*string `json:"virtualRouterIps,omitempty"`
16375
16376	// The VirtualWAN to which the VirtualHub belongs.
16377	VirtualWan *SubResource `json:"virtualWan,omitempty"`
16378
16379	// READ-ONLY; List of references to Bgp Connections.
16380	BgpConnections []*SubResource `json:"bgpConnections,omitempty" azure:"ro"`
16381
16382	// READ-ONLY; List of references to IpConfigurations.
16383	IPConfigurations []*SubResource `json:"ipConfigurations,omitempty" azure:"ro"`
16384
16385	// READ-ONLY; The provisioning state of the virtual hub resource.
16386	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
16387
16388	// READ-ONLY; The routing state.
16389	RoutingState *RoutingState `json:"routingState,omitempty" azure:"ro"`
16390}
16391
16392// MarshalJSON implements the json.Marshaller interface for type VirtualHubProperties.
16393func (v VirtualHubProperties) MarshalJSON() ([]byte, error) {
16394	objectMap := make(map[string]interface{})
16395	populate(objectMap, "addressPrefix", v.AddressPrefix)
16396	populate(objectMap, "allowBranchToBranchTraffic", v.AllowBranchToBranchTraffic)
16397	populate(objectMap, "azureFirewall", v.AzureFirewall)
16398	populate(objectMap, "bgpConnections", v.BgpConnections)
16399	populate(objectMap, "expressRouteGateway", v.ExpressRouteGateway)
16400	populate(objectMap, "ipConfigurations", v.IPConfigurations)
16401	populate(objectMap, "p2SVpnGateway", v.P2SVPNGateway)
16402	populate(objectMap, "preferredRoutingGateway", v.PreferredRoutingGateway)
16403	populate(objectMap, "provisioningState", v.ProvisioningState)
16404	populate(objectMap, "routeTable", v.RouteTable)
16405	populate(objectMap, "routingState", v.RoutingState)
16406	populate(objectMap, "sku", v.SKU)
16407	populate(objectMap, "securityPartnerProvider", v.SecurityPartnerProvider)
16408	populate(objectMap, "securityProviderName", v.SecurityProviderName)
16409	populate(objectMap, "vpnGateway", v.VPNGateway)
16410	populate(objectMap, "virtualHubRouteTableV2s", v.VirtualHubRouteTableV2S)
16411	populate(objectMap, "virtualRouterAsn", v.VirtualRouterAsn)
16412	populate(objectMap, "virtualRouterIps", v.VirtualRouterIPs)
16413	populate(objectMap, "virtualWan", v.VirtualWan)
16414	return json.Marshal(objectMap)
16415}
16416
16417// VirtualHubRoute - VirtualHub route.
16418type VirtualHubRoute struct {
16419	// List of all addressPrefixes.
16420	AddressPrefixes []*string `json:"addressPrefixes,omitempty"`
16421
16422	// NextHop ip address.
16423	NextHopIPAddress *string `json:"nextHopIpAddress,omitempty"`
16424}
16425
16426// MarshalJSON implements the json.Marshaller interface for type VirtualHubRoute.
16427func (v VirtualHubRoute) MarshalJSON() ([]byte, error) {
16428	objectMap := make(map[string]interface{})
16429	populate(objectMap, "addressPrefixes", v.AddressPrefixes)
16430	populate(objectMap, "nextHopIpAddress", v.NextHopIPAddress)
16431	return json.Marshal(objectMap)
16432}
16433
16434// VirtualHubRouteTable - VirtualHub route table.
16435type VirtualHubRouteTable struct {
16436	// List of all routes.
16437	Routes []*VirtualHubRoute `json:"routes,omitempty"`
16438}
16439
16440// MarshalJSON implements the json.Marshaller interface for type VirtualHubRouteTable.
16441func (v VirtualHubRouteTable) MarshalJSON() ([]byte, error) {
16442	objectMap := make(map[string]interface{})
16443	populate(objectMap, "routes", v.Routes)
16444	return json.Marshal(objectMap)
16445}
16446
16447// VirtualHubRouteTableV2 Resource.
16448type VirtualHubRouteTableV2 struct {
16449	SubResource
16450	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
16451	Name *string `json:"name,omitempty"`
16452
16453	// Properties of the virtual hub route table v2.
16454	Properties *VirtualHubRouteTableV2Properties `json:"properties,omitempty"`
16455
16456	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
16457	Etag *string `json:"etag,omitempty" azure:"ro"`
16458}
16459
16460// MarshalJSON implements the json.Marshaller interface for type VirtualHubRouteTableV2.
16461func (v VirtualHubRouteTableV2) MarshalJSON() ([]byte, error) {
16462	objectMap := v.SubResource.marshalInternal()
16463	populate(objectMap, "etag", v.Etag)
16464	populate(objectMap, "name", v.Name)
16465	populate(objectMap, "properties", v.Properties)
16466	return json.Marshal(objectMap)
16467}
16468
16469// VirtualHubRouteTableV2Properties - Parameters for VirtualHubRouteTableV2.
16470type VirtualHubRouteTableV2Properties struct {
16471	// List of all connections attached to this route table v2.
16472	AttachedConnections []*string `json:"attachedConnections,omitempty"`
16473
16474	// List of all routes.
16475	Routes []*VirtualHubRouteV2 `json:"routes,omitempty"`
16476
16477	// READ-ONLY; The provisioning state of the virtual hub route table v2 resource.
16478	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
16479}
16480
16481// MarshalJSON implements the json.Marshaller interface for type VirtualHubRouteTableV2Properties.
16482func (v VirtualHubRouteTableV2Properties) MarshalJSON() ([]byte, error) {
16483	objectMap := make(map[string]interface{})
16484	populate(objectMap, "attachedConnections", v.AttachedConnections)
16485	populate(objectMap, "provisioningState", v.ProvisioningState)
16486	populate(objectMap, "routes", v.Routes)
16487	return json.Marshal(objectMap)
16488}
16489
16490// VirtualHubRouteTableV2SBeginCreateOrUpdateOptions contains the optional parameters for the VirtualHubRouteTableV2S.BeginCreateOrUpdate method.
16491type VirtualHubRouteTableV2SBeginCreateOrUpdateOptions struct {
16492	// placeholder for future optional parameters
16493}
16494
16495// VirtualHubRouteTableV2SBeginDeleteOptions contains the optional parameters for the VirtualHubRouteTableV2S.BeginDelete method.
16496type VirtualHubRouteTableV2SBeginDeleteOptions struct {
16497	// placeholder for future optional parameters
16498}
16499
16500// VirtualHubRouteTableV2SGetOptions contains the optional parameters for the VirtualHubRouteTableV2S.Get method.
16501type VirtualHubRouteTableV2SGetOptions struct {
16502	// placeholder for future optional parameters
16503}
16504
16505// VirtualHubRouteTableV2SListOptions contains the optional parameters for the VirtualHubRouteTableV2S.List method.
16506type VirtualHubRouteTableV2SListOptions struct {
16507	// placeholder for future optional parameters
16508}
16509
16510// VirtualHubRouteV2 - VirtualHubRouteTableV2 route.
16511type VirtualHubRouteV2 struct {
16512	// The type of destinations.
16513	DestinationType *string `json:"destinationType,omitempty"`
16514
16515	// List of all destinations.
16516	Destinations []*string `json:"destinations,omitempty"`
16517
16518	// The type of next hops.
16519	NextHopType *string `json:"nextHopType,omitempty"`
16520
16521	// NextHops ip address.
16522	NextHops []*string `json:"nextHops,omitempty"`
16523}
16524
16525// MarshalJSON implements the json.Marshaller interface for type VirtualHubRouteV2.
16526func (v VirtualHubRouteV2) MarshalJSON() ([]byte, error) {
16527	objectMap := make(map[string]interface{})
16528	populate(objectMap, "destinationType", v.DestinationType)
16529	populate(objectMap, "destinations", v.Destinations)
16530	populate(objectMap, "nextHopType", v.NextHopType)
16531	populate(objectMap, "nextHops", v.NextHops)
16532	return json.Marshal(objectMap)
16533}
16534
16535// VirtualHubsBeginCreateOrUpdateOptions contains the optional parameters for the VirtualHubs.BeginCreateOrUpdate method.
16536type VirtualHubsBeginCreateOrUpdateOptions struct {
16537	// placeholder for future optional parameters
16538}
16539
16540// VirtualHubsBeginDeleteOptions contains the optional parameters for the VirtualHubs.BeginDelete method.
16541type VirtualHubsBeginDeleteOptions struct {
16542	// placeholder for future optional parameters
16543}
16544
16545// VirtualHubsBeginGetEffectiveVirtualHubRoutesOptions contains the optional parameters for the VirtualHubs.BeginGetEffectiveVirtualHubRoutes method.
16546type VirtualHubsBeginGetEffectiveVirtualHubRoutesOptions struct {
16547	// Parameters supplied to get the effective routes for a specific resource.
16548	EffectiveRoutesParameters *EffectiveRoutesParameters
16549}
16550
16551// VirtualHubsGetOptions contains the optional parameters for the VirtualHubs.Get method.
16552type VirtualHubsGetOptions struct {
16553	// placeholder for future optional parameters
16554}
16555
16556// VirtualHubsListByResourceGroupOptions contains the optional parameters for the VirtualHubs.ListByResourceGroup method.
16557type VirtualHubsListByResourceGroupOptions struct {
16558	// placeholder for future optional parameters
16559}
16560
16561// VirtualHubsListOptions contains the optional parameters for the VirtualHubs.List method.
16562type VirtualHubsListOptions struct {
16563	// placeholder for future optional parameters
16564}
16565
16566// VirtualHubsUpdateTagsOptions contains the optional parameters for the VirtualHubs.UpdateTags method.
16567type VirtualHubsUpdateTagsOptions struct {
16568	// placeholder for future optional parameters
16569}
16570
16571// VirtualNetwork - Virtual Network resource.
16572type VirtualNetwork struct {
16573	Resource
16574	// The extended location of the virtual network.
16575	ExtendedLocation *ExtendedLocation `json:"extendedLocation,omitempty"`
16576
16577	// Properties of the virtual network.
16578	Properties *VirtualNetworkPropertiesFormat `json:"properties,omitempty"`
16579
16580	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
16581	Etag *string `json:"etag,omitempty" azure:"ro"`
16582}
16583
16584// MarshalJSON implements the json.Marshaller interface for type VirtualNetwork.
16585func (v VirtualNetwork) MarshalJSON() ([]byte, error) {
16586	objectMap := v.Resource.marshalInternal()
16587	populate(objectMap, "etag", v.Etag)
16588	populate(objectMap, "extendedLocation", v.ExtendedLocation)
16589	populate(objectMap, "properties", v.Properties)
16590	return json.Marshal(objectMap)
16591}
16592
16593// VirtualNetworkBgpCommunities - Bgp Communities sent over ExpressRoute with each route corresponding to a prefix in this VNET.
16594type VirtualNetworkBgpCommunities struct {
16595	// REQUIRED; The BGP community associated with the virtual network.
16596	VirtualNetworkCommunity *string `json:"virtualNetworkCommunity,omitempty"`
16597
16598	// READ-ONLY; The BGP community associated with the region of the virtual network.
16599	RegionalCommunity *string `json:"regionalCommunity,omitempty" azure:"ro"`
16600}
16601
16602// VirtualNetworkConnectionGatewayReference - A reference to VirtualNetworkGateway or LocalNetworkGateway resource.
16603type VirtualNetworkConnectionGatewayReference struct {
16604	// REQUIRED; The ID of VirtualNetworkGateway or LocalNetworkGateway resource.
16605	ID *string `json:"id,omitempty"`
16606}
16607
16608// VirtualNetworkGateway - A common class for general resource information.
16609type VirtualNetworkGateway struct {
16610	Resource
16611	// REQUIRED; Properties of the virtual network gateway.
16612	Properties *VirtualNetworkGatewayPropertiesFormat `json:"properties,omitempty"`
16613
16614	// The extended location of type local virtual network gateway.
16615	ExtendedLocation *ExtendedLocation `json:"extendedLocation,omitempty"`
16616
16617	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
16618	Etag *string `json:"etag,omitempty" azure:"ro"`
16619}
16620
16621// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGateway.
16622func (v VirtualNetworkGateway) MarshalJSON() ([]byte, error) {
16623	objectMap := v.Resource.marshalInternal()
16624	populate(objectMap, "etag", v.Etag)
16625	populate(objectMap, "extendedLocation", v.ExtendedLocation)
16626	populate(objectMap, "properties", v.Properties)
16627	return json.Marshal(objectMap)
16628}
16629
16630// VirtualNetworkGatewayConnection - A common class for general resource information.
16631type VirtualNetworkGatewayConnection struct {
16632	Resource
16633	// REQUIRED; Properties of the virtual network gateway connection.
16634	Properties *VirtualNetworkGatewayConnectionPropertiesFormat `json:"properties,omitempty"`
16635
16636	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
16637	Etag *string `json:"etag,omitempty" azure:"ro"`
16638}
16639
16640// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayConnection.
16641func (v VirtualNetworkGatewayConnection) MarshalJSON() ([]byte, error) {
16642	objectMap := v.Resource.marshalInternal()
16643	populate(objectMap, "etag", v.Etag)
16644	populate(objectMap, "properties", v.Properties)
16645	return json.Marshal(objectMap)
16646}
16647
16648// VirtualNetworkGatewayConnectionListEntity - A common class for general resource information.
16649type VirtualNetworkGatewayConnectionListEntity struct {
16650	Resource
16651	// REQUIRED; Properties of the virtual network gateway connection.
16652	Properties *VirtualNetworkGatewayConnectionListEntityPropertiesFormat `json:"properties,omitempty"`
16653
16654	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
16655	Etag *string `json:"etag,omitempty" azure:"ro"`
16656}
16657
16658// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayConnectionListEntity.
16659func (v VirtualNetworkGatewayConnectionListEntity) MarshalJSON() ([]byte, error) {
16660	objectMap := v.Resource.marshalInternal()
16661	populate(objectMap, "etag", v.Etag)
16662	populate(objectMap, "properties", v.Properties)
16663	return json.Marshal(objectMap)
16664}
16665
16666// VirtualNetworkGatewayConnectionListEntityPropertiesFormat - VirtualNetworkGatewayConnection properties.
16667type VirtualNetworkGatewayConnectionListEntityPropertiesFormat struct {
16668	// REQUIRED; Gateway connection type.
16669	ConnectionType *VirtualNetworkGatewayConnectionType `json:"connectionType,omitempty"`
16670
16671	// REQUIRED; The reference to virtual network gateway resource.
16672	VirtualNetworkGateway1 *VirtualNetworkConnectionGatewayReference `json:"virtualNetworkGateway1,omitempty"`
16673
16674	// The authorizationKey.
16675	AuthorizationKey *string `json:"authorizationKey,omitempty"`
16676
16677	// The connection mode for this connection.
16678	ConnectionMode *VirtualNetworkGatewayConnectionMode `json:"connectionMode,omitempty"`
16679
16680	// Connection protocol used for this connection.
16681	ConnectionProtocol *VirtualNetworkGatewayConnectionProtocol `json:"connectionProtocol,omitempty"`
16682
16683	// EnableBgp flag.
16684	EnableBgp *bool `json:"enableBgp,omitempty"`
16685
16686	// Bypass ExpressRoute Gateway for data forwarding.
16687	ExpressRouteGatewayBypass *bool `json:"expressRouteGatewayBypass,omitempty"`
16688
16689	// The IPSec Policies to be considered by this connection.
16690	IPSecPolicies []*IPSecPolicy `json:"ipsecPolicies,omitempty"`
16691
16692	// The reference to local network gateway resource.
16693	LocalNetworkGateway2 *VirtualNetworkConnectionGatewayReference `json:"localNetworkGateway2,omitempty"`
16694
16695	// The reference to peerings resource.
16696	Peer *SubResource `json:"peer,omitempty"`
16697
16698	// The routing weight.
16699	RoutingWeight *int32 `json:"routingWeight,omitempty"`
16700
16701	// The IPSec shared key.
16702	SharedKey *string `json:"sharedKey,omitempty"`
16703
16704	// The Traffic Selector Policies to be considered by this connection.
16705	TrafficSelectorPolicies []*TrafficSelectorPolicy `json:"trafficSelectorPolicies,omitempty"`
16706
16707	// Enable policy-based traffic selectors.
16708	UsePolicyBasedTrafficSelectors *bool `json:"usePolicyBasedTrafficSelectors,omitempty"`
16709
16710	// The reference to virtual network gateway resource.
16711	VirtualNetworkGateway2 *VirtualNetworkConnectionGatewayReference `json:"virtualNetworkGateway2,omitempty"`
16712
16713	// READ-ONLY; Virtual Network Gateway connection status.
16714	ConnectionStatus *VirtualNetworkGatewayConnectionStatus `json:"connectionStatus,omitempty" azure:"ro"`
16715
16716	// READ-ONLY; The egress bytes transferred in this connection.
16717	EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty" azure:"ro"`
16718
16719	// READ-ONLY; The ingress bytes transferred in this connection.
16720	IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty" azure:"ro"`
16721
16722	// READ-ONLY; The provisioning state of the virtual network gateway connection resource.
16723	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
16724
16725	// READ-ONLY; The resource GUID property of the virtual network gateway connection resource.
16726	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
16727
16728	// READ-ONLY; Collection of all tunnels' connection health status.
16729	TunnelConnectionStatus []*TunnelConnectionHealth `json:"tunnelConnectionStatus,omitempty" azure:"ro"`
16730}
16731
16732// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayConnectionListEntityPropertiesFormat.
16733func (v VirtualNetworkGatewayConnectionListEntityPropertiesFormat) MarshalJSON() ([]byte, error) {
16734	objectMap := make(map[string]interface{})
16735	populate(objectMap, "authorizationKey", v.AuthorizationKey)
16736	populate(objectMap, "connectionMode", v.ConnectionMode)
16737	populate(objectMap, "connectionProtocol", v.ConnectionProtocol)
16738	populate(objectMap, "connectionStatus", v.ConnectionStatus)
16739	populate(objectMap, "connectionType", v.ConnectionType)
16740	populate(objectMap, "egressBytesTransferred", v.EgressBytesTransferred)
16741	populate(objectMap, "enableBgp", v.EnableBgp)
16742	populate(objectMap, "expressRouteGatewayBypass", v.ExpressRouteGatewayBypass)
16743	populate(objectMap, "ipsecPolicies", v.IPSecPolicies)
16744	populate(objectMap, "ingressBytesTransferred", v.IngressBytesTransferred)
16745	populate(objectMap, "localNetworkGateway2", v.LocalNetworkGateway2)
16746	populate(objectMap, "peer", v.Peer)
16747	populate(objectMap, "provisioningState", v.ProvisioningState)
16748	populate(objectMap, "resourceGuid", v.ResourceGUID)
16749	populate(objectMap, "routingWeight", v.RoutingWeight)
16750	populate(objectMap, "sharedKey", v.SharedKey)
16751	populate(objectMap, "trafficSelectorPolicies", v.TrafficSelectorPolicies)
16752	populate(objectMap, "tunnelConnectionStatus", v.TunnelConnectionStatus)
16753	populate(objectMap, "usePolicyBasedTrafficSelectors", v.UsePolicyBasedTrafficSelectors)
16754	populate(objectMap, "virtualNetworkGateway1", v.VirtualNetworkGateway1)
16755	populate(objectMap, "virtualNetworkGateway2", v.VirtualNetworkGateway2)
16756	return json.Marshal(objectMap)
16757}
16758
16759// VirtualNetworkGatewayConnectionListResult - Response for the ListVirtualNetworkGatewayConnections API service call.
16760type VirtualNetworkGatewayConnectionListResult struct {
16761	// A list of VirtualNetworkGatewayConnection resources that exists in a resource group.
16762	Value []*VirtualNetworkGatewayConnection `json:"value,omitempty"`
16763
16764	// READ-ONLY; The URL to get the next set of results.
16765	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
16766}
16767
16768// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayConnectionListResult.
16769func (v VirtualNetworkGatewayConnectionListResult) MarshalJSON() ([]byte, error) {
16770	objectMap := make(map[string]interface{})
16771	populate(objectMap, "nextLink", v.NextLink)
16772	populate(objectMap, "value", v.Value)
16773	return json.Marshal(objectMap)
16774}
16775
16776// VirtualNetworkGatewayConnectionPropertiesFormat - VirtualNetworkGatewayConnection properties.
16777type VirtualNetworkGatewayConnectionPropertiesFormat struct {
16778	// REQUIRED; Gateway connection type.
16779	ConnectionType *VirtualNetworkGatewayConnectionType `json:"connectionType,omitempty"`
16780
16781	// REQUIRED; The reference to virtual network gateway resource.
16782	VirtualNetworkGateway1 *VirtualNetworkGateway `json:"virtualNetworkGateway1,omitempty"`
16783
16784	// The authorizationKey.
16785	AuthorizationKey *string `json:"authorizationKey,omitempty"`
16786
16787	// The connection mode for this connection.
16788	ConnectionMode *VirtualNetworkGatewayConnectionMode `json:"connectionMode,omitempty"`
16789
16790	// Connection protocol used for this connection.
16791	ConnectionProtocol *VirtualNetworkGatewayConnectionProtocol `json:"connectionProtocol,omitempty"`
16792
16793	// The dead peer detection timeout of this connection in seconds.
16794	DpdTimeoutSeconds *int32 `json:"dpdTimeoutSeconds,omitempty"`
16795
16796	// List of egress NatRules.
16797	EgressNatRules []*SubResource `json:"egressNatRules,omitempty"`
16798
16799	// EnableBgp flag.
16800	EnableBgp *bool `json:"enableBgp,omitempty"`
16801
16802	// Bypass ExpressRoute Gateway for data forwarding.
16803	ExpressRouteGatewayBypass *bool `json:"expressRouteGatewayBypass,omitempty"`
16804
16805	// The IPSec Policies to be considered by this connection.
16806	IPSecPolicies []*IPSecPolicy `json:"ipsecPolicies,omitempty"`
16807
16808	// List of ingress NatRules.
16809	IngressNatRules []*SubResource `json:"ingressNatRules,omitempty"`
16810
16811	// The reference to local network gateway resource.
16812	LocalNetworkGateway2 *LocalNetworkGateway `json:"localNetworkGateway2,omitempty"`
16813
16814	// The reference to peerings resource.
16815	Peer *SubResource `json:"peer,omitempty"`
16816
16817	// The routing weight.
16818	RoutingWeight *int32 `json:"routingWeight,omitempty"`
16819
16820	// The IPSec shared key.
16821	SharedKey *string `json:"sharedKey,omitempty"`
16822
16823	// The Traffic Selector Policies to be considered by this connection.
16824	TrafficSelectorPolicies []*TrafficSelectorPolicy `json:"trafficSelectorPolicies,omitempty"`
16825
16826	// Use private local Azure IP for the connection.
16827	UseLocalAzureIPAddress *bool `json:"useLocalAzureIpAddress,omitempty"`
16828
16829	// Enable policy-based traffic selectors.
16830	UsePolicyBasedTrafficSelectors *bool `json:"usePolicyBasedTrafficSelectors,omitempty"`
16831
16832	// The reference to virtual network gateway resource.
16833	VirtualNetworkGateway2 *VirtualNetworkGateway `json:"virtualNetworkGateway2,omitempty"`
16834
16835	// READ-ONLY; Virtual Network Gateway connection status.
16836	ConnectionStatus *VirtualNetworkGatewayConnectionStatus `json:"connectionStatus,omitempty" azure:"ro"`
16837
16838	// READ-ONLY; The egress bytes transferred in this connection.
16839	EgressBytesTransferred *int64 `json:"egressBytesTransferred,omitempty" azure:"ro"`
16840
16841	// READ-ONLY; The ingress bytes transferred in this connection.
16842	IngressBytesTransferred *int64 `json:"ingressBytesTransferred,omitempty" azure:"ro"`
16843
16844	// READ-ONLY; The provisioning state of the virtual network gateway connection resource.
16845	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
16846
16847	// READ-ONLY; The resource GUID property of the virtual network gateway connection resource.
16848	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
16849
16850	// READ-ONLY; Collection of all tunnels' connection health status.
16851	TunnelConnectionStatus []*TunnelConnectionHealth `json:"tunnelConnectionStatus,omitempty" azure:"ro"`
16852}
16853
16854// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayConnectionPropertiesFormat.
16855func (v VirtualNetworkGatewayConnectionPropertiesFormat) MarshalJSON() ([]byte, error) {
16856	objectMap := make(map[string]interface{})
16857	populate(objectMap, "authorizationKey", v.AuthorizationKey)
16858	populate(objectMap, "connectionMode", v.ConnectionMode)
16859	populate(objectMap, "connectionProtocol", v.ConnectionProtocol)
16860	populate(objectMap, "connectionStatus", v.ConnectionStatus)
16861	populate(objectMap, "connectionType", v.ConnectionType)
16862	populate(objectMap, "dpdTimeoutSeconds", v.DpdTimeoutSeconds)
16863	populate(objectMap, "egressBytesTransferred", v.EgressBytesTransferred)
16864	populate(objectMap, "egressNatRules", v.EgressNatRules)
16865	populate(objectMap, "enableBgp", v.EnableBgp)
16866	populate(objectMap, "expressRouteGatewayBypass", v.ExpressRouteGatewayBypass)
16867	populate(objectMap, "ipsecPolicies", v.IPSecPolicies)
16868	populate(objectMap, "ingressBytesTransferred", v.IngressBytesTransferred)
16869	populate(objectMap, "ingressNatRules", v.IngressNatRules)
16870	populate(objectMap, "localNetworkGateway2", v.LocalNetworkGateway2)
16871	populate(objectMap, "peer", v.Peer)
16872	populate(objectMap, "provisioningState", v.ProvisioningState)
16873	populate(objectMap, "resourceGuid", v.ResourceGUID)
16874	populate(objectMap, "routingWeight", v.RoutingWeight)
16875	populate(objectMap, "sharedKey", v.SharedKey)
16876	populate(objectMap, "trafficSelectorPolicies", v.TrafficSelectorPolicies)
16877	populate(objectMap, "tunnelConnectionStatus", v.TunnelConnectionStatus)
16878	populate(objectMap, "useLocalAzureIpAddress", v.UseLocalAzureIPAddress)
16879	populate(objectMap, "usePolicyBasedTrafficSelectors", v.UsePolicyBasedTrafficSelectors)
16880	populate(objectMap, "virtualNetworkGateway1", v.VirtualNetworkGateway1)
16881	populate(objectMap, "virtualNetworkGateway2", v.VirtualNetworkGateway2)
16882	return json.Marshal(objectMap)
16883}
16884
16885// VirtualNetworkGatewayConnectionsBeginCreateOrUpdateOptions contains the optional parameters for the VirtualNetworkGatewayConnections.BeginCreateOrUpdate
16886// method.
16887type VirtualNetworkGatewayConnectionsBeginCreateOrUpdateOptions struct {
16888	// placeholder for future optional parameters
16889}
16890
16891// VirtualNetworkGatewayConnectionsBeginDeleteOptions contains the optional parameters for the VirtualNetworkGatewayConnections.BeginDelete method.
16892type VirtualNetworkGatewayConnectionsBeginDeleteOptions struct {
16893	// placeholder for future optional parameters
16894}
16895
16896// VirtualNetworkGatewayConnectionsBeginGetIkeSasOptions contains the optional parameters for the VirtualNetworkGatewayConnections.BeginGetIkeSas method.
16897type VirtualNetworkGatewayConnectionsBeginGetIkeSasOptions struct {
16898	// placeholder for future optional parameters
16899}
16900
16901// VirtualNetworkGatewayConnectionsBeginResetConnectionOptions contains the optional parameters for the VirtualNetworkGatewayConnections.BeginResetConnection
16902// method.
16903type VirtualNetworkGatewayConnectionsBeginResetConnectionOptions struct {
16904	// placeholder for future optional parameters
16905}
16906
16907// VirtualNetworkGatewayConnectionsBeginResetSharedKeyOptions contains the optional parameters for the VirtualNetworkGatewayConnections.BeginResetSharedKey
16908// method.
16909type VirtualNetworkGatewayConnectionsBeginResetSharedKeyOptions struct {
16910	// placeholder for future optional parameters
16911}
16912
16913// VirtualNetworkGatewayConnectionsBeginSetSharedKeyOptions contains the optional parameters for the VirtualNetworkGatewayConnections.BeginSetSharedKey
16914// method.
16915type VirtualNetworkGatewayConnectionsBeginSetSharedKeyOptions struct {
16916	// placeholder for future optional parameters
16917}
16918
16919// VirtualNetworkGatewayConnectionsBeginStartPacketCaptureOptions contains the optional parameters for the VirtualNetworkGatewayConnections.BeginStartPacketCapture
16920// method.
16921type VirtualNetworkGatewayConnectionsBeginStartPacketCaptureOptions struct {
16922	// Virtual network gateway packet capture parameters supplied to start packet capture on gateway connection.
16923	Parameters *VPNPacketCaptureStartParameters
16924}
16925
16926// VirtualNetworkGatewayConnectionsBeginStopPacketCaptureOptions contains the optional parameters for the VirtualNetworkGatewayConnections.BeginStopPacketCapture
16927// method.
16928type VirtualNetworkGatewayConnectionsBeginStopPacketCaptureOptions struct {
16929	// placeholder for future optional parameters
16930}
16931
16932// VirtualNetworkGatewayConnectionsBeginUpdateTagsOptions contains the optional parameters for the VirtualNetworkGatewayConnections.BeginUpdateTags method.
16933type VirtualNetworkGatewayConnectionsBeginUpdateTagsOptions struct {
16934	// placeholder for future optional parameters
16935}
16936
16937// VirtualNetworkGatewayConnectionsGetOptions contains the optional parameters for the VirtualNetworkGatewayConnections.Get method.
16938type VirtualNetworkGatewayConnectionsGetOptions struct {
16939	// placeholder for future optional parameters
16940}
16941
16942// VirtualNetworkGatewayConnectionsGetSharedKeyOptions contains the optional parameters for the VirtualNetworkGatewayConnections.GetSharedKey method.
16943type VirtualNetworkGatewayConnectionsGetSharedKeyOptions struct {
16944	// placeholder for future optional parameters
16945}
16946
16947// VirtualNetworkGatewayConnectionsListOptions contains the optional parameters for the VirtualNetworkGatewayConnections.List method.
16948type VirtualNetworkGatewayConnectionsListOptions struct {
16949	// placeholder for future optional parameters
16950}
16951
16952// VirtualNetworkGatewayIPConfiguration - IP configuration for virtual network gateway.
16953type VirtualNetworkGatewayIPConfiguration struct {
16954	SubResource
16955	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
16956	Name *string `json:"name,omitempty"`
16957
16958	// Properties of the virtual network gateway ip configuration.
16959	Properties *VirtualNetworkGatewayIPConfigurationPropertiesFormat `json:"properties,omitempty"`
16960
16961	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
16962	Etag *string `json:"etag,omitempty" azure:"ro"`
16963}
16964
16965// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayIPConfiguration.
16966func (v VirtualNetworkGatewayIPConfiguration) MarshalJSON() ([]byte, error) {
16967	objectMap := v.SubResource.marshalInternal()
16968	populate(objectMap, "etag", v.Etag)
16969	populate(objectMap, "name", v.Name)
16970	populate(objectMap, "properties", v.Properties)
16971	return json.Marshal(objectMap)
16972}
16973
16974// VirtualNetworkGatewayIPConfigurationPropertiesFormat - Properties of VirtualNetworkGatewayIPConfiguration.
16975type VirtualNetworkGatewayIPConfigurationPropertiesFormat struct {
16976	// The private IP address allocation method.
16977	PrivateIPAllocationMethod *IPAllocationMethod `json:"privateIPAllocationMethod,omitempty"`
16978
16979	// The reference to the public IP resource.
16980	PublicIPAddress *SubResource `json:"publicIPAddress,omitempty"`
16981
16982	// The reference to the subnet resource.
16983	Subnet *SubResource `json:"subnet,omitempty"`
16984
16985	// READ-ONLY; Private IP Address for this gateway.
16986	PrivateIPAddress *string `json:"privateIPAddress,omitempty" azure:"ro"`
16987
16988	// READ-ONLY; The provisioning state of the virtual network gateway IP configuration resource.
16989	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
16990}
16991
16992// VirtualNetworkGatewayListConnectionsResult - Response for the VirtualNetworkGatewayListConnections API service call.
16993type VirtualNetworkGatewayListConnectionsResult struct {
16994	// A list of VirtualNetworkGatewayConnection resources that exists in a resource group.
16995	Value []*VirtualNetworkGatewayConnectionListEntity `json:"value,omitempty"`
16996
16997	// READ-ONLY; The URL to get the next set of results.
16998	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
16999}
17000
17001// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayListConnectionsResult.
17002func (v VirtualNetworkGatewayListConnectionsResult) MarshalJSON() ([]byte, error) {
17003	objectMap := make(map[string]interface{})
17004	populate(objectMap, "nextLink", v.NextLink)
17005	populate(objectMap, "value", v.Value)
17006	return json.Marshal(objectMap)
17007}
17008
17009// VirtualNetworkGatewayListResult - Response for the ListVirtualNetworkGateways API service call.
17010type VirtualNetworkGatewayListResult struct {
17011	// A list of VirtualNetworkGateway resources that exists in a resource group.
17012	Value []*VirtualNetworkGateway `json:"value,omitempty"`
17013
17014	// READ-ONLY; The URL to get the next set of results.
17015	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
17016}
17017
17018// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayListResult.
17019func (v VirtualNetworkGatewayListResult) MarshalJSON() ([]byte, error) {
17020	objectMap := make(map[string]interface{})
17021	populate(objectMap, "nextLink", v.NextLink)
17022	populate(objectMap, "value", v.Value)
17023	return json.Marshal(objectMap)
17024}
17025
17026// VirtualNetworkGatewayNatRule Resource.
17027type VirtualNetworkGatewayNatRule struct {
17028	SubResource
17029	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
17030	Name *string `json:"name,omitempty"`
17031
17032	// Properties of the Virtual Network Gateway NAT rule.
17033	Properties *VirtualNetworkGatewayNatRuleProperties `json:"properties,omitempty"`
17034
17035	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
17036	Etag *string `json:"etag,omitempty" azure:"ro"`
17037
17038	// READ-ONLY; Resource type.
17039	Type *string `json:"type,omitempty" azure:"ro"`
17040}
17041
17042// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayNatRule.
17043func (v VirtualNetworkGatewayNatRule) MarshalJSON() ([]byte, error) {
17044	objectMap := v.SubResource.marshalInternal()
17045	populate(objectMap, "etag", v.Etag)
17046	populate(objectMap, "name", v.Name)
17047	populate(objectMap, "properties", v.Properties)
17048	populate(objectMap, "type", v.Type)
17049	return json.Marshal(objectMap)
17050}
17051
17052// VirtualNetworkGatewayNatRuleProperties - Parameters for VirtualNetworkGatewayNatRule.
17053type VirtualNetworkGatewayNatRuleProperties struct {
17054	// The private IP address external mapping for NAT.
17055	ExternalMappings []*VPNNatRuleMapping `json:"externalMappings,omitempty"`
17056
17057	// The IP Configuration ID this NAT rule applies to.
17058	IPConfigurationID *string `json:"ipConfigurationId,omitempty"`
17059
17060	// The private IP address internal mapping for NAT.
17061	InternalMappings []*VPNNatRuleMapping `json:"internalMappings,omitempty"`
17062
17063	// The Source NAT direction of a VPN NAT.
17064	Mode *VPNNatRuleMode `json:"mode,omitempty"`
17065
17066	// The type of NAT rule for VPN NAT.
17067	Type *VPNNatRuleType `json:"type,omitempty"`
17068
17069	// READ-ONLY; The provisioning state of the NAT Rule resource.
17070	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
17071}
17072
17073// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayNatRuleProperties.
17074func (v VirtualNetworkGatewayNatRuleProperties) MarshalJSON() ([]byte, error) {
17075	objectMap := make(map[string]interface{})
17076	populate(objectMap, "externalMappings", v.ExternalMappings)
17077	populate(objectMap, "ipConfigurationId", v.IPConfigurationID)
17078	populate(objectMap, "internalMappings", v.InternalMappings)
17079	populate(objectMap, "mode", v.Mode)
17080	populate(objectMap, "provisioningState", v.ProvisioningState)
17081	populate(objectMap, "type", v.Type)
17082	return json.Marshal(objectMap)
17083}
17084
17085// VirtualNetworkGatewayNatRulesBeginCreateOrUpdateOptions contains the optional parameters for the VirtualNetworkGatewayNatRules.BeginCreateOrUpdate method.
17086type VirtualNetworkGatewayNatRulesBeginCreateOrUpdateOptions struct {
17087	// placeholder for future optional parameters
17088}
17089
17090// VirtualNetworkGatewayNatRulesBeginDeleteOptions contains the optional parameters for the VirtualNetworkGatewayNatRules.BeginDelete method.
17091type VirtualNetworkGatewayNatRulesBeginDeleteOptions struct {
17092	// placeholder for future optional parameters
17093}
17094
17095// VirtualNetworkGatewayNatRulesGetOptions contains the optional parameters for the VirtualNetworkGatewayNatRules.Get method.
17096type VirtualNetworkGatewayNatRulesGetOptions struct {
17097	// placeholder for future optional parameters
17098}
17099
17100// VirtualNetworkGatewayNatRulesListByVirtualNetworkGatewayOptions contains the optional parameters for the VirtualNetworkGatewayNatRules.ListByVirtualNetworkGateway
17101// method.
17102type VirtualNetworkGatewayNatRulesListByVirtualNetworkGatewayOptions struct {
17103	// placeholder for future optional parameters
17104}
17105
17106// VirtualNetworkGatewayPropertiesFormat - VirtualNetworkGateway properties.
17107type VirtualNetworkGatewayPropertiesFormat struct {
17108	// ActiveActive flag.
17109	Active *bool `json:"activeActive,omitempty"`
17110
17111	// Virtual network gateway's BGP speaker settings.
17112	BgpSettings *BgpSettings `json:"bgpSettings,omitempty"`
17113
17114	// The reference to the address space resource which represents the custom routes address space specified by the customer for virtual network gateway and
17115	// VpnClient.
17116	CustomRoutes *AddressSpace `json:"customRoutes,omitempty"`
17117
17118	// Whether BGP is enabled for this virtual network gateway or not.
17119	EnableBgp *bool `json:"enableBgp,omitempty"`
17120
17121	// EnableBgpRouteTranslationForNat flag.
17122	EnableBgpRouteTranslationForNat *bool `json:"enableBgpRouteTranslationForNat,omitempty"`
17123
17124	// Whether dns forwarding is enabled or not.
17125	EnableDNSForwarding *bool `json:"enableDnsForwarding,omitempty"`
17126
17127	// Whether private IP needs to be enabled on this gateway for connections or not.
17128	EnablePrivateIPAddress *bool `json:"enablePrivateIpAddress,omitempty"`
17129
17130	// The reference to the LocalNetworkGateway resource which represents local network site having default routes. Assign Null value in case of removing existing
17131	// default site setting.
17132	GatewayDefaultSite *SubResource `json:"gatewayDefaultSite,omitempty"`
17133
17134	// The type of this virtual network gateway.
17135	GatewayType *VirtualNetworkGatewayType `json:"gatewayType,omitempty"`
17136
17137	// IP configurations for virtual network gateway.
17138	IPConfigurations []*VirtualNetworkGatewayIPConfiguration `json:"ipConfigurations,omitempty"`
17139
17140	// NatRules for virtual network gateway.
17141	NatRules []*VirtualNetworkGatewayNatRule `json:"natRules,omitempty"`
17142
17143	// The reference to the VirtualNetworkGatewaySku resource which represents the SKU selected for Virtual network gateway.
17144	SKU *VirtualNetworkGatewaySKU `json:"sku,omitempty"`
17145
17146	// Customer vnet resource id. VirtualNetworkGateway of type local gateway is associated with the customer vnet.
17147	VNetExtendedLocationResourceID *string `json:"vNetExtendedLocationResourceId,omitempty"`
17148
17149	// The reference to the VpnClientConfiguration resource which represents the P2S VpnClient configurations.
17150	VPNClientConfiguration *VPNClientConfiguration `json:"vpnClientConfiguration,omitempty"`
17151
17152	// The generation for this VirtualNetworkGateway. Must be None if gatewayType is not VPN.
17153	VPNGatewayGeneration *VPNGatewayGeneration `json:"vpnGatewayGeneration,omitempty"`
17154
17155	// The type of this virtual network gateway.
17156	VPNType *VPNType `json:"vpnType,omitempty"`
17157
17158	// READ-ONLY; The IP address allocated by the gateway to which dns requests can be sent.
17159	InboundDNSForwardingEndpoint *string `json:"inboundDnsForwardingEndpoint,omitempty" azure:"ro"`
17160
17161	// READ-ONLY; The provisioning state of the virtual network gateway resource.
17162	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
17163
17164	// READ-ONLY; The resource GUID property of the virtual network gateway resource.
17165	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
17166}
17167
17168// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkGatewayPropertiesFormat.
17169func (v VirtualNetworkGatewayPropertiesFormat) MarshalJSON() ([]byte, error) {
17170	objectMap := make(map[string]interface{})
17171	populate(objectMap, "activeActive", v.Active)
17172	populate(objectMap, "bgpSettings", v.BgpSettings)
17173	populate(objectMap, "customRoutes", v.CustomRoutes)
17174	populate(objectMap, "enableBgp", v.EnableBgp)
17175	populate(objectMap, "enableBgpRouteTranslationForNat", v.EnableBgpRouteTranslationForNat)
17176	populate(objectMap, "enableDnsForwarding", v.EnableDNSForwarding)
17177	populate(objectMap, "enablePrivateIpAddress", v.EnablePrivateIPAddress)
17178	populate(objectMap, "gatewayDefaultSite", v.GatewayDefaultSite)
17179	populate(objectMap, "gatewayType", v.GatewayType)
17180	populate(objectMap, "ipConfigurations", v.IPConfigurations)
17181	populate(objectMap, "inboundDnsForwardingEndpoint", v.InboundDNSForwardingEndpoint)
17182	populate(objectMap, "natRules", v.NatRules)
17183	populate(objectMap, "provisioningState", v.ProvisioningState)
17184	populate(objectMap, "resourceGuid", v.ResourceGUID)
17185	populate(objectMap, "sku", v.SKU)
17186	populate(objectMap, "vNetExtendedLocationResourceId", v.VNetExtendedLocationResourceID)
17187	populate(objectMap, "vpnClientConfiguration", v.VPNClientConfiguration)
17188	populate(objectMap, "vpnGatewayGeneration", v.VPNGatewayGeneration)
17189	populate(objectMap, "vpnType", v.VPNType)
17190	return json.Marshal(objectMap)
17191}
17192
17193// VirtualNetworkGatewaySKU - VirtualNetworkGatewaySku details.
17194type VirtualNetworkGatewaySKU struct {
17195	// Gateway SKU name.
17196	Name *VirtualNetworkGatewaySKUName `json:"name,omitempty"`
17197
17198	// Gateway SKU tier.
17199	Tier *VirtualNetworkGatewaySKUTier `json:"tier,omitempty"`
17200
17201	// READ-ONLY; The capacity.
17202	Capacity *int32 `json:"capacity,omitempty" azure:"ro"`
17203}
17204
17205// VirtualNetworkGatewaysBeginCreateOrUpdateOptions contains the optional parameters for the VirtualNetworkGateways.BeginCreateOrUpdate method.
17206type VirtualNetworkGatewaysBeginCreateOrUpdateOptions struct {
17207	// placeholder for future optional parameters
17208}
17209
17210// VirtualNetworkGatewaysBeginDeleteOptions contains the optional parameters for the VirtualNetworkGateways.BeginDelete method.
17211type VirtualNetworkGatewaysBeginDeleteOptions struct {
17212	// placeholder for future optional parameters
17213}
17214
17215// VirtualNetworkGatewaysBeginDisconnectVirtualNetworkGatewayVPNConnectionsOptions contains the optional parameters for the VirtualNetworkGateways.BeginDisconnectVirtualNetworkGatewayVPNConnections
17216// method.
17217type VirtualNetworkGatewaysBeginDisconnectVirtualNetworkGatewayVPNConnectionsOptions struct {
17218	// placeholder for future optional parameters
17219}
17220
17221// VirtualNetworkGatewaysBeginGenerateVPNProfileOptions contains the optional parameters for the VirtualNetworkGateways.BeginGenerateVPNProfile method.
17222type VirtualNetworkGatewaysBeginGenerateVPNProfileOptions struct {
17223	// placeholder for future optional parameters
17224}
17225
17226// VirtualNetworkGatewaysBeginGeneratevpnclientpackageOptions contains the optional parameters for the VirtualNetworkGateways.BeginGeneratevpnclientpackage
17227// method.
17228type VirtualNetworkGatewaysBeginGeneratevpnclientpackageOptions struct {
17229	// placeholder for future optional parameters
17230}
17231
17232// VirtualNetworkGatewaysBeginGetAdvertisedRoutesOptions contains the optional parameters for the VirtualNetworkGateways.BeginGetAdvertisedRoutes method.
17233type VirtualNetworkGatewaysBeginGetAdvertisedRoutesOptions struct {
17234	// placeholder for future optional parameters
17235}
17236
17237// VirtualNetworkGatewaysBeginGetBgpPeerStatusOptions contains the optional parameters for the VirtualNetworkGateways.BeginGetBgpPeerStatus method.
17238type VirtualNetworkGatewaysBeginGetBgpPeerStatusOptions struct {
17239	// The IP address of the peer to retrieve the status of.
17240	Peer *string
17241}
17242
17243// VirtualNetworkGatewaysBeginGetLearnedRoutesOptions contains the optional parameters for the VirtualNetworkGateways.BeginGetLearnedRoutes method.
17244type VirtualNetworkGatewaysBeginGetLearnedRoutesOptions struct {
17245	// placeholder for future optional parameters
17246}
17247
17248// VirtualNetworkGatewaysBeginGetVPNProfilePackageURLOptions contains the optional parameters for the VirtualNetworkGateways.BeginGetVPNProfilePackageURL
17249// method.
17250type VirtualNetworkGatewaysBeginGetVPNProfilePackageURLOptions struct {
17251	// placeholder for future optional parameters
17252}
17253
17254// VirtualNetworkGatewaysBeginGetVpnclientConnectionHealthOptions contains the optional parameters for the VirtualNetworkGateways.BeginGetVpnclientConnectionHealth
17255// method.
17256type VirtualNetworkGatewaysBeginGetVpnclientConnectionHealthOptions struct {
17257	// placeholder for future optional parameters
17258}
17259
17260// VirtualNetworkGatewaysBeginGetVpnclientIPSecParametersOptions contains the optional parameters for the VirtualNetworkGateways.BeginGetVpnclientIPSecParameters
17261// method.
17262type VirtualNetworkGatewaysBeginGetVpnclientIPSecParametersOptions struct {
17263	// placeholder for future optional parameters
17264}
17265
17266// VirtualNetworkGatewaysBeginResetOptions contains the optional parameters for the VirtualNetworkGateways.BeginReset method.
17267type VirtualNetworkGatewaysBeginResetOptions struct {
17268	// Virtual network gateway vip address supplied to the begin reset of the active-active feature enabled gateway.
17269	GatewayVip *string
17270}
17271
17272// VirtualNetworkGatewaysBeginResetVPNClientSharedKeyOptions contains the optional parameters for the VirtualNetworkGateways.BeginResetVPNClientSharedKey
17273// method.
17274type VirtualNetworkGatewaysBeginResetVPNClientSharedKeyOptions struct {
17275	// placeholder for future optional parameters
17276}
17277
17278// VirtualNetworkGatewaysBeginSetVpnclientIPSecParametersOptions contains the optional parameters for the VirtualNetworkGateways.BeginSetVpnclientIPSecParameters
17279// method.
17280type VirtualNetworkGatewaysBeginSetVpnclientIPSecParametersOptions struct {
17281	// placeholder for future optional parameters
17282}
17283
17284// VirtualNetworkGatewaysBeginStartPacketCaptureOptions contains the optional parameters for the VirtualNetworkGateways.BeginStartPacketCapture method.
17285type VirtualNetworkGatewaysBeginStartPacketCaptureOptions struct {
17286	// Virtual network gateway packet capture parameters supplied to start packet capture on gateway.
17287	Parameters *VPNPacketCaptureStartParameters
17288}
17289
17290// VirtualNetworkGatewaysBeginStopPacketCaptureOptions contains the optional parameters for the VirtualNetworkGateways.BeginStopPacketCapture method.
17291type VirtualNetworkGatewaysBeginStopPacketCaptureOptions struct {
17292	// placeholder for future optional parameters
17293}
17294
17295// VirtualNetworkGatewaysBeginUpdateTagsOptions contains the optional parameters for the VirtualNetworkGateways.BeginUpdateTags method.
17296type VirtualNetworkGatewaysBeginUpdateTagsOptions struct {
17297	// placeholder for future optional parameters
17298}
17299
17300// VirtualNetworkGatewaysGetOptions contains the optional parameters for the VirtualNetworkGateways.Get method.
17301type VirtualNetworkGatewaysGetOptions struct {
17302	// placeholder for future optional parameters
17303}
17304
17305// VirtualNetworkGatewaysListConnectionsOptions contains the optional parameters for the VirtualNetworkGateways.ListConnections method.
17306type VirtualNetworkGatewaysListConnectionsOptions struct {
17307	// placeholder for future optional parameters
17308}
17309
17310// VirtualNetworkGatewaysListOptions contains the optional parameters for the VirtualNetworkGateways.List method.
17311type VirtualNetworkGatewaysListOptions struct {
17312	// placeholder for future optional parameters
17313}
17314
17315// VirtualNetworkGatewaysSupportedVPNDevicesOptions contains the optional parameters for the VirtualNetworkGateways.SupportedVPNDevices method.
17316type VirtualNetworkGatewaysSupportedVPNDevicesOptions struct {
17317	// placeholder for future optional parameters
17318}
17319
17320// VirtualNetworkGatewaysVPNDeviceConfigurationScriptOptions contains the optional parameters for the VirtualNetworkGateways.VPNDeviceConfigurationScript
17321// method.
17322type VirtualNetworkGatewaysVPNDeviceConfigurationScriptOptions struct {
17323	// placeholder for future optional parameters
17324}
17325
17326// VirtualNetworkListResult - Response for the ListVirtualNetworks API service call.
17327type VirtualNetworkListResult struct {
17328	// The URL to get the next set of results.
17329	NextLink *string `json:"nextLink,omitempty"`
17330
17331	// A list of VirtualNetwork resources in a resource group.
17332	Value []*VirtualNetwork `json:"value,omitempty"`
17333}
17334
17335// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkListResult.
17336func (v VirtualNetworkListResult) MarshalJSON() ([]byte, error) {
17337	objectMap := make(map[string]interface{})
17338	populate(objectMap, "nextLink", v.NextLink)
17339	populate(objectMap, "value", v.Value)
17340	return json.Marshal(objectMap)
17341}
17342
17343// VirtualNetworkListUsageResult - Response for the virtual networks GetUsage API service call.
17344type VirtualNetworkListUsageResult struct {
17345	// The URL to get the next set of results.
17346	NextLink *string `json:"nextLink,omitempty"`
17347
17348	// READ-ONLY; VirtualNetwork usage stats.
17349	Value []*VirtualNetworkUsage `json:"value,omitempty" azure:"ro"`
17350}
17351
17352// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkListUsageResult.
17353func (v VirtualNetworkListUsageResult) MarshalJSON() ([]byte, error) {
17354	objectMap := make(map[string]interface{})
17355	populate(objectMap, "nextLink", v.NextLink)
17356	populate(objectMap, "value", v.Value)
17357	return json.Marshal(objectMap)
17358}
17359
17360// VirtualNetworkPeering - Peerings in a virtual network resource.
17361type VirtualNetworkPeering struct {
17362	SubResource
17363	// The name of the resource that is unique within a resource group. This name can be used to access the resource.
17364	Name *string `json:"name,omitempty"`
17365
17366	// Properties of the virtual network peering.
17367	Properties *VirtualNetworkPeeringPropertiesFormat `json:"properties,omitempty"`
17368
17369	// Resource type.
17370	Type *string `json:"type,omitempty"`
17371
17372	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
17373	Etag *string `json:"etag,omitempty" azure:"ro"`
17374}
17375
17376// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkPeering.
17377func (v VirtualNetworkPeering) MarshalJSON() ([]byte, error) {
17378	objectMap := v.SubResource.marshalInternal()
17379	populate(objectMap, "etag", v.Etag)
17380	populate(objectMap, "name", v.Name)
17381	populate(objectMap, "properties", v.Properties)
17382	populate(objectMap, "type", v.Type)
17383	return json.Marshal(objectMap)
17384}
17385
17386// VirtualNetworkPeeringListResult - Response for ListSubnets API service call. Retrieves all subnets that belong to a virtual network.
17387type VirtualNetworkPeeringListResult struct {
17388	// The URL to get the next set of results.
17389	NextLink *string `json:"nextLink,omitempty"`
17390
17391	// The peerings in a virtual network.
17392	Value []*VirtualNetworkPeering `json:"value,omitempty"`
17393}
17394
17395// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkPeeringListResult.
17396func (v VirtualNetworkPeeringListResult) MarshalJSON() ([]byte, error) {
17397	objectMap := make(map[string]interface{})
17398	populate(objectMap, "nextLink", v.NextLink)
17399	populate(objectMap, "value", v.Value)
17400	return json.Marshal(objectMap)
17401}
17402
17403// VirtualNetworkPeeringPropertiesFormat - Properties of the virtual network peering.
17404type VirtualNetworkPeeringPropertiesFormat struct {
17405	// Whether the forwarded traffic from the VMs in the local virtual network will be allowed/disallowed in remote virtual network.
17406	AllowForwardedTraffic *bool `json:"allowForwardedTraffic,omitempty"`
17407
17408	// If gateway links can be used in remote virtual networking to link to this virtual network.
17409	AllowGatewayTransit *bool `json:"allowGatewayTransit,omitempty"`
17410
17411	// Whether the VMs in the local virtual network space would be able to access the VMs in remote virtual network space.
17412	AllowVirtualNetworkAccess *bool `json:"allowVirtualNetworkAccess,omitempty"`
17413
17414	// If we need to verify the provisioning state of the remote gateway.
17415	DoNotVerifyRemoteGateways *bool `json:"doNotVerifyRemoteGateways,omitempty"`
17416
17417	// The status of the virtual network peering.
17418	PeeringState *VirtualNetworkPeeringState `json:"peeringState,omitempty"`
17419
17420	// The peering sync status of the virtual network peering.
17421	PeeringSyncLevel *VirtualNetworkPeeringLevel `json:"peeringSyncLevel,omitempty"`
17422
17423	// The reference to the address space peered with the remote virtual network.
17424	RemoteAddressSpace *AddressSpace `json:"remoteAddressSpace,omitempty"`
17425
17426	// The reference to the remote virtual network's Bgp Communities.
17427	RemoteBgpCommunities *VirtualNetworkBgpCommunities `json:"remoteBgpCommunities,omitempty"`
17428
17429	// The reference to the remote virtual network. The remote virtual network can be in the same or different region (preview). See here to register for the
17430	// preview and learn more
17431	// (https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-create-peering).
17432	RemoteVirtualNetwork *SubResource `json:"remoteVirtualNetwork,omitempty"`
17433
17434	// The reference to the current address space of the remote virtual network.
17435	RemoteVirtualNetworkAddressSpace *AddressSpace `json:"remoteVirtualNetworkAddressSpace,omitempty"`
17436
17437	// If remote gateways can be used on this virtual network. If the flag is set to true, and allowGatewayTransit on remote peering is also true, virtual network
17438	// will use gateways of remote virtual network
17439	// for transit. Only one peering can have this flag set to true. This flag cannot be set if virtual network already has a gateway.
17440	UseRemoteGateways *bool `json:"useRemoteGateways,omitempty"`
17441
17442	// READ-ONLY; The provisioning state of the virtual network peering resource.
17443	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
17444
17445	// READ-ONLY; The resourceGuid property of the Virtual Network peering resource.
17446	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
17447}
17448
17449// VirtualNetworkPeeringsBeginCreateOrUpdateOptions contains the optional parameters for the VirtualNetworkPeerings.BeginCreateOrUpdate method.
17450type VirtualNetworkPeeringsBeginCreateOrUpdateOptions struct {
17451	// Parameter indicates the intention to sync the peering with the current address space on the remote vNet after it's updated.
17452	SyncRemoteAddressSpace *SyncRemoteAddressSpace
17453}
17454
17455// VirtualNetworkPeeringsBeginDeleteOptions contains the optional parameters for the VirtualNetworkPeerings.BeginDelete method.
17456type VirtualNetworkPeeringsBeginDeleteOptions struct {
17457	// placeholder for future optional parameters
17458}
17459
17460// VirtualNetworkPeeringsGetOptions contains the optional parameters for the VirtualNetworkPeerings.Get method.
17461type VirtualNetworkPeeringsGetOptions struct {
17462	// placeholder for future optional parameters
17463}
17464
17465// VirtualNetworkPeeringsListOptions contains the optional parameters for the VirtualNetworkPeerings.List method.
17466type VirtualNetworkPeeringsListOptions struct {
17467	// placeholder for future optional parameters
17468}
17469
17470// VirtualNetworkPropertiesFormat - Properties of the virtual network.
17471type VirtualNetworkPropertiesFormat struct {
17472	// The AddressSpace that contains an array of IP address ranges that can be used by subnets.
17473	AddressSpace *AddressSpace `json:"addressSpace,omitempty"`
17474
17475	// Bgp Communities sent over ExpressRoute with each route corresponding to a prefix in this VNET.
17476	BgpCommunities *VirtualNetworkBgpCommunities `json:"bgpCommunities,omitempty"`
17477
17478	// The DDoS protection plan associated with the virtual network.
17479	DdosProtectionPlan *SubResource `json:"ddosProtectionPlan,omitempty"`
17480
17481	// The dhcpOptions that contains an array of DNS servers available to VMs deployed in the virtual network.
17482	DhcpOptions *DhcpOptions `json:"dhcpOptions,omitempty"`
17483
17484	// Indicates if DDoS protection is enabled for all the protected resources in the virtual network. It requires a DDoS protection plan associated with the
17485	// resource.
17486	EnableDdosProtection *bool `json:"enableDdosProtection,omitempty"`
17487
17488	// Indicates if VM protection is enabled for all the subnets in the virtual network.
17489	EnableVMProtection *bool `json:"enableVmProtection,omitempty"`
17490
17491	// The FlowTimeout value (in minutes) for the Virtual Network
17492	FlowTimeoutInMinutes *int32 `json:"flowTimeoutInMinutes,omitempty"`
17493
17494	// Array of IpAllocation which reference this VNET.
17495	IPAllocations []*SubResource `json:"ipAllocations,omitempty"`
17496
17497	// A list of subnets in a Virtual Network.
17498	Subnets []*Subnet `json:"subnets,omitempty"`
17499
17500	// A list of peerings in a Virtual Network.
17501	VirtualNetworkPeerings []*VirtualNetworkPeering `json:"virtualNetworkPeerings,omitempty"`
17502
17503	// READ-ONLY; The provisioning state of the virtual network resource.
17504	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
17505
17506	// READ-ONLY; The resourceGuid property of the Virtual Network resource.
17507	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
17508}
17509
17510// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkPropertiesFormat.
17511func (v VirtualNetworkPropertiesFormat) MarshalJSON() ([]byte, error) {
17512	objectMap := make(map[string]interface{})
17513	populate(objectMap, "addressSpace", v.AddressSpace)
17514	populate(objectMap, "bgpCommunities", v.BgpCommunities)
17515	populate(objectMap, "ddosProtectionPlan", v.DdosProtectionPlan)
17516	populate(objectMap, "dhcpOptions", v.DhcpOptions)
17517	populate(objectMap, "enableDdosProtection", v.EnableDdosProtection)
17518	populate(objectMap, "enableVmProtection", v.EnableVMProtection)
17519	populate(objectMap, "flowTimeoutInMinutes", v.FlowTimeoutInMinutes)
17520	populate(objectMap, "ipAllocations", v.IPAllocations)
17521	populate(objectMap, "provisioningState", v.ProvisioningState)
17522	populate(objectMap, "resourceGuid", v.ResourceGUID)
17523	populate(objectMap, "subnets", v.Subnets)
17524	populate(objectMap, "virtualNetworkPeerings", v.VirtualNetworkPeerings)
17525	return json.Marshal(objectMap)
17526}
17527
17528// VirtualNetworkTap - Virtual Network Tap resource.
17529type VirtualNetworkTap struct {
17530	Resource
17531	// Virtual Network Tap Properties.
17532	Properties *VirtualNetworkTapPropertiesFormat `json:"properties,omitempty"`
17533
17534	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
17535	Etag *string `json:"etag,omitempty" azure:"ro"`
17536}
17537
17538// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkTap.
17539func (v VirtualNetworkTap) MarshalJSON() ([]byte, error) {
17540	objectMap := v.Resource.marshalInternal()
17541	populate(objectMap, "etag", v.Etag)
17542	populate(objectMap, "properties", v.Properties)
17543	return json.Marshal(objectMap)
17544}
17545
17546// VirtualNetworkTapListResult - Response for ListVirtualNetworkTap API service call.
17547type VirtualNetworkTapListResult struct {
17548	// The URL to get the next set of results.
17549	NextLink *string `json:"nextLink,omitempty"`
17550
17551	// A list of VirtualNetworkTaps in a resource group.
17552	Value []*VirtualNetworkTap `json:"value,omitempty"`
17553}
17554
17555// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkTapListResult.
17556func (v VirtualNetworkTapListResult) MarshalJSON() ([]byte, error) {
17557	objectMap := make(map[string]interface{})
17558	populate(objectMap, "nextLink", v.NextLink)
17559	populate(objectMap, "value", v.Value)
17560	return json.Marshal(objectMap)
17561}
17562
17563// VirtualNetworkTapPropertiesFormat - Virtual Network Tap properties.
17564type VirtualNetworkTapPropertiesFormat struct {
17565	// The reference to the private IP address on the internal Load Balancer that will receive the tap.
17566	DestinationLoadBalancerFrontEndIPConfiguration *FrontendIPConfiguration `json:"destinationLoadBalancerFrontEndIPConfiguration,omitempty"`
17567
17568	// The reference to the private IP Address of the collector nic that will receive the tap.
17569	DestinationNetworkInterfaceIPConfiguration *NetworkInterfaceIPConfiguration `json:"destinationNetworkInterfaceIPConfiguration,omitempty"`
17570
17571	// The VXLAN destination port that will receive the tapped traffic.
17572	DestinationPort *int32 `json:"destinationPort,omitempty"`
17573
17574	// READ-ONLY; Specifies the list of resource IDs for the network interface IP configuration that needs to be tapped.
17575	NetworkInterfaceTapConfigurations []*NetworkInterfaceTapConfiguration `json:"networkInterfaceTapConfigurations,omitempty" azure:"ro"`
17576
17577	// READ-ONLY; The provisioning state of the virtual network tap resource.
17578	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
17579
17580	// READ-ONLY; The resource GUID property of the virtual network tap resource.
17581	ResourceGUID *string `json:"resourceGuid,omitempty" azure:"ro"`
17582}
17583
17584// MarshalJSON implements the json.Marshaller interface for type VirtualNetworkTapPropertiesFormat.
17585func (v VirtualNetworkTapPropertiesFormat) MarshalJSON() ([]byte, error) {
17586	objectMap := make(map[string]interface{})
17587	populate(objectMap, "destinationLoadBalancerFrontEndIPConfiguration", v.DestinationLoadBalancerFrontEndIPConfiguration)
17588	populate(objectMap, "destinationNetworkInterfaceIPConfiguration", v.DestinationNetworkInterfaceIPConfiguration)
17589	populate(objectMap, "destinationPort", v.DestinationPort)
17590	populate(objectMap, "networkInterfaceTapConfigurations", v.NetworkInterfaceTapConfigurations)
17591	populate(objectMap, "provisioningState", v.ProvisioningState)
17592	populate(objectMap, "resourceGuid", v.ResourceGUID)
17593	return json.Marshal(objectMap)
17594}
17595
17596// VirtualNetworkTapsBeginCreateOrUpdateOptions contains the optional parameters for the VirtualNetworkTaps.BeginCreateOrUpdate method.
17597type VirtualNetworkTapsBeginCreateOrUpdateOptions struct {
17598	// placeholder for future optional parameters
17599}
17600
17601// VirtualNetworkTapsBeginDeleteOptions contains the optional parameters for the VirtualNetworkTaps.BeginDelete method.
17602type VirtualNetworkTapsBeginDeleteOptions struct {
17603	// placeholder for future optional parameters
17604}
17605
17606// VirtualNetworkTapsGetOptions contains the optional parameters for the VirtualNetworkTaps.Get method.
17607type VirtualNetworkTapsGetOptions struct {
17608	// placeholder for future optional parameters
17609}
17610
17611// VirtualNetworkTapsListAllOptions contains the optional parameters for the VirtualNetworkTaps.ListAll method.
17612type VirtualNetworkTapsListAllOptions struct {
17613	// placeholder for future optional parameters
17614}
17615
17616// VirtualNetworkTapsListByResourceGroupOptions contains the optional parameters for the VirtualNetworkTaps.ListByResourceGroup method.
17617type VirtualNetworkTapsListByResourceGroupOptions struct {
17618	// placeholder for future optional parameters
17619}
17620
17621// VirtualNetworkTapsUpdateTagsOptions contains the optional parameters for the VirtualNetworkTaps.UpdateTags method.
17622type VirtualNetworkTapsUpdateTagsOptions struct {
17623	// placeholder for future optional parameters
17624}
17625
17626// VirtualNetworkUsage - Usage details for subnet.
17627type VirtualNetworkUsage struct {
17628	// READ-ONLY; Indicates number of IPs used from the Subnet.
17629	CurrentValue *float64 `json:"currentValue,omitempty" azure:"ro"`
17630
17631	// READ-ONLY; Subnet identifier.
17632	ID *string `json:"id,omitempty" azure:"ro"`
17633
17634	// READ-ONLY; Indicates the size of the subnet.
17635	Limit *float64 `json:"limit,omitempty" azure:"ro"`
17636
17637	// READ-ONLY; The name containing common and localized value for usage.
17638	Name *VirtualNetworkUsageName `json:"name,omitempty" azure:"ro"`
17639
17640	// READ-ONLY; Usage units. Returns 'Count'.
17641	Unit *string `json:"unit,omitempty" azure:"ro"`
17642}
17643
17644// VirtualNetworkUsageName - Usage strings container.
17645type VirtualNetworkUsageName struct {
17646	// READ-ONLY; Localized subnet size and usage string.
17647	LocalizedValue *string `json:"localizedValue,omitempty" azure:"ro"`
17648
17649	// READ-ONLY; Subnet size and usage string.
17650	Value *string `json:"value,omitempty" azure:"ro"`
17651}
17652
17653// VirtualNetworksBeginCreateOrUpdateOptions contains the optional parameters for the VirtualNetworks.BeginCreateOrUpdate method.
17654type VirtualNetworksBeginCreateOrUpdateOptions struct {
17655	// placeholder for future optional parameters
17656}
17657
17658// VirtualNetworksBeginDeleteOptions contains the optional parameters for the VirtualNetworks.BeginDelete method.
17659type VirtualNetworksBeginDeleteOptions struct {
17660	// placeholder for future optional parameters
17661}
17662
17663// VirtualNetworksCheckIPAddressAvailabilityOptions contains the optional parameters for the VirtualNetworks.CheckIPAddressAvailability method.
17664type VirtualNetworksCheckIPAddressAvailabilityOptions struct {
17665	// placeholder for future optional parameters
17666}
17667
17668// VirtualNetworksGetOptions contains the optional parameters for the VirtualNetworks.Get method.
17669type VirtualNetworksGetOptions struct {
17670	// Expands referenced resources.
17671	Expand *string
17672}
17673
17674// VirtualNetworksListAllOptions contains the optional parameters for the VirtualNetworks.ListAll method.
17675type VirtualNetworksListAllOptions struct {
17676	// placeholder for future optional parameters
17677}
17678
17679// VirtualNetworksListOptions contains the optional parameters for the VirtualNetworks.List method.
17680type VirtualNetworksListOptions struct {
17681	// placeholder for future optional parameters
17682}
17683
17684// VirtualNetworksListUsageOptions contains the optional parameters for the VirtualNetworks.ListUsage method.
17685type VirtualNetworksListUsageOptions struct {
17686	// placeholder for future optional parameters
17687}
17688
17689// VirtualNetworksUpdateTagsOptions contains the optional parameters for the VirtualNetworks.UpdateTags method.
17690type VirtualNetworksUpdateTagsOptions struct {
17691	// placeholder for future optional parameters
17692}
17693
17694// VirtualRouter Resource.
17695type VirtualRouter struct {
17696	Resource
17697	// Properties of the Virtual Router.
17698	Properties *VirtualRouterPropertiesFormat `json:"properties,omitempty"`
17699
17700	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
17701	Etag *string `json:"etag,omitempty" azure:"ro"`
17702}
17703
17704// MarshalJSON implements the json.Marshaller interface for type VirtualRouter.
17705func (v VirtualRouter) MarshalJSON() ([]byte, error) {
17706	objectMap := v.Resource.marshalInternal()
17707	populate(objectMap, "etag", v.Etag)
17708	populate(objectMap, "properties", v.Properties)
17709	return json.Marshal(objectMap)
17710}
17711
17712// VirtualRouterListResult - Response for ListVirtualRouters API service call.
17713type VirtualRouterListResult struct {
17714	// URL to get the next set of results.
17715	NextLink *string `json:"nextLink,omitempty"`
17716
17717	// List of Virtual Routers.
17718	Value []*VirtualRouter `json:"value,omitempty"`
17719}
17720
17721// MarshalJSON implements the json.Marshaller interface for type VirtualRouterListResult.
17722func (v VirtualRouterListResult) MarshalJSON() ([]byte, error) {
17723	objectMap := make(map[string]interface{})
17724	populate(objectMap, "nextLink", v.NextLink)
17725	populate(objectMap, "value", v.Value)
17726	return json.Marshal(objectMap)
17727}
17728
17729// VirtualRouterPeering - Virtual Router Peering resource.
17730type VirtualRouterPeering struct {
17731	SubResource
17732	// Name of the virtual router peering that is unique within a virtual router.
17733	Name *string `json:"name,omitempty"`
17734
17735	// The properties of the Virtual Router Peering.
17736	Properties *VirtualRouterPeeringProperties `json:"properties,omitempty"`
17737
17738	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
17739	Etag *string `json:"etag,omitempty" azure:"ro"`
17740
17741	// READ-ONLY; Peering type.
17742	Type *string `json:"type,omitempty" azure:"ro"`
17743}
17744
17745// MarshalJSON implements the json.Marshaller interface for type VirtualRouterPeering.
17746func (v VirtualRouterPeering) MarshalJSON() ([]byte, error) {
17747	objectMap := v.SubResource.marshalInternal()
17748	populate(objectMap, "etag", v.Etag)
17749	populate(objectMap, "name", v.Name)
17750	populate(objectMap, "properties", v.Properties)
17751	populate(objectMap, "type", v.Type)
17752	return json.Marshal(objectMap)
17753}
17754
17755// VirtualRouterPeeringListResult - Response for ListVirtualRouterPeerings API service call.
17756type VirtualRouterPeeringListResult struct {
17757	// URL to get the next set of results.
17758	NextLink *string `json:"nextLink,omitempty"`
17759
17760	// List of VirtualRouterPeerings in a VirtualRouter.
17761	Value []*VirtualRouterPeering `json:"value,omitempty"`
17762}
17763
17764// MarshalJSON implements the json.Marshaller interface for type VirtualRouterPeeringListResult.
17765func (v VirtualRouterPeeringListResult) MarshalJSON() ([]byte, error) {
17766	objectMap := make(map[string]interface{})
17767	populate(objectMap, "nextLink", v.NextLink)
17768	populate(objectMap, "value", v.Value)
17769	return json.Marshal(objectMap)
17770}
17771
17772// VirtualRouterPeeringProperties - Properties of the rule group.
17773type VirtualRouterPeeringProperties struct {
17774	// Peer ASN.
17775	PeerAsn *int64 `json:"peerAsn,omitempty"`
17776
17777	// Peer IP.
17778	PeerIP *string `json:"peerIp,omitempty"`
17779
17780	// READ-ONLY; The provisioning state of the resource.
17781	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
17782}
17783
17784// VirtualRouterPeeringsBeginCreateOrUpdateOptions contains the optional parameters for the VirtualRouterPeerings.BeginCreateOrUpdate method.
17785type VirtualRouterPeeringsBeginCreateOrUpdateOptions struct {
17786	// placeholder for future optional parameters
17787}
17788
17789// VirtualRouterPeeringsBeginDeleteOptions contains the optional parameters for the VirtualRouterPeerings.BeginDelete method.
17790type VirtualRouterPeeringsBeginDeleteOptions struct {
17791	// placeholder for future optional parameters
17792}
17793
17794// VirtualRouterPeeringsGetOptions contains the optional parameters for the VirtualRouterPeerings.Get method.
17795type VirtualRouterPeeringsGetOptions struct {
17796	// placeholder for future optional parameters
17797}
17798
17799// VirtualRouterPeeringsListOptions contains the optional parameters for the VirtualRouterPeerings.List method.
17800type VirtualRouterPeeringsListOptions struct {
17801	// placeholder for future optional parameters
17802}
17803
17804// VirtualRouterPropertiesFormat - Virtual Router definition.
17805type VirtualRouterPropertiesFormat struct {
17806	// The Gateway on which VirtualRouter is hosted.
17807	HostedGateway *SubResource `json:"hostedGateway,omitempty"`
17808
17809	// The Subnet on which VirtualRouter is hosted.
17810	HostedSubnet *SubResource `json:"hostedSubnet,omitempty"`
17811
17812	// VirtualRouter ASN.
17813	VirtualRouterAsn *int64 `json:"virtualRouterAsn,omitempty"`
17814
17815	// VirtualRouter IPs.
17816	VirtualRouterIPs []*string `json:"virtualRouterIps,omitempty"`
17817
17818	// READ-ONLY; List of references to VirtualRouterPeerings.
17819	Peerings []*SubResource `json:"peerings,omitempty" azure:"ro"`
17820
17821	// READ-ONLY; The provisioning state of the resource.
17822	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
17823}
17824
17825// MarshalJSON implements the json.Marshaller interface for type VirtualRouterPropertiesFormat.
17826func (v VirtualRouterPropertiesFormat) MarshalJSON() ([]byte, error) {
17827	objectMap := make(map[string]interface{})
17828	populate(objectMap, "hostedGateway", v.HostedGateway)
17829	populate(objectMap, "hostedSubnet", v.HostedSubnet)
17830	populate(objectMap, "peerings", v.Peerings)
17831	populate(objectMap, "provisioningState", v.ProvisioningState)
17832	populate(objectMap, "virtualRouterAsn", v.VirtualRouterAsn)
17833	populate(objectMap, "virtualRouterIps", v.VirtualRouterIPs)
17834	return json.Marshal(objectMap)
17835}
17836
17837// VirtualRoutersBeginCreateOrUpdateOptions contains the optional parameters for the VirtualRouters.BeginCreateOrUpdate method.
17838type VirtualRoutersBeginCreateOrUpdateOptions struct {
17839	// placeholder for future optional parameters
17840}
17841
17842// VirtualRoutersBeginDeleteOptions contains the optional parameters for the VirtualRouters.BeginDelete method.
17843type VirtualRoutersBeginDeleteOptions struct {
17844	// placeholder for future optional parameters
17845}
17846
17847// VirtualRoutersGetOptions contains the optional parameters for the VirtualRouters.Get method.
17848type VirtualRoutersGetOptions struct {
17849	// Expands referenced resources.
17850	Expand *string
17851}
17852
17853// VirtualRoutersListByResourceGroupOptions contains the optional parameters for the VirtualRouters.ListByResourceGroup method.
17854type VirtualRoutersListByResourceGroupOptions struct {
17855	// placeholder for future optional parameters
17856}
17857
17858// VirtualRoutersListOptions contains the optional parameters for the VirtualRouters.List method.
17859type VirtualRoutersListOptions struct {
17860	// placeholder for future optional parameters
17861}
17862
17863// VirtualWAN Resource.
17864type VirtualWAN struct {
17865	Resource
17866	// Properties of the virtual WAN.
17867	Properties *VirtualWanProperties `json:"properties,omitempty"`
17868
17869	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
17870	Etag *string `json:"etag,omitempty" azure:"ro"`
17871}
17872
17873// MarshalJSON implements the json.Marshaller interface for type VirtualWAN.
17874func (v VirtualWAN) MarshalJSON() ([]byte, error) {
17875	objectMap := v.Resource.marshalInternal()
17876	populate(objectMap, "etag", v.Etag)
17877	populate(objectMap, "properties", v.Properties)
17878	return json.Marshal(objectMap)
17879}
17880
17881// VirtualWanProperties - Parameters for VirtualWAN.
17882type VirtualWanProperties struct {
17883	// True if branch to branch traffic is allowed.
17884	AllowBranchToBranchTraffic *bool `json:"allowBranchToBranchTraffic,omitempty"`
17885
17886	// True if Vnet to Vnet traffic is allowed.
17887	AllowVnetToVnetTraffic *bool `json:"allowVnetToVnetTraffic,omitempty"`
17888
17889	// Vpn encryption to be disabled or not.
17890	DisableVPNEncryption *bool `json:"disableVpnEncryption,omitempty"`
17891
17892	// The type of the VirtualWAN.
17893	Type *string `json:"type,omitempty"`
17894
17895	// READ-ONLY; The office local breakout category.
17896	Office365LocalBreakoutCategory *OfficeTrafficCategory `json:"office365LocalBreakoutCategory,omitempty" azure:"ro"`
17897
17898	// READ-ONLY; The provisioning state of the virtual WAN resource.
17899	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
17900
17901	// READ-ONLY; List of VpnSites in the VirtualWAN.
17902	VPNSites []*SubResource `json:"vpnSites,omitempty" azure:"ro"`
17903
17904	// READ-ONLY; List of VirtualHubs in the VirtualWAN.
17905	VirtualHubs []*SubResource `json:"virtualHubs,omitempty" azure:"ro"`
17906}
17907
17908// MarshalJSON implements the json.Marshaller interface for type VirtualWanProperties.
17909func (v VirtualWanProperties) MarshalJSON() ([]byte, error) {
17910	objectMap := make(map[string]interface{})
17911	populate(objectMap, "allowBranchToBranchTraffic", v.AllowBranchToBranchTraffic)
17912	populate(objectMap, "allowVnetToVnetTraffic", v.AllowVnetToVnetTraffic)
17913	populate(objectMap, "disableVpnEncryption", v.DisableVPNEncryption)
17914	populate(objectMap, "office365LocalBreakoutCategory", v.Office365LocalBreakoutCategory)
17915	populate(objectMap, "provisioningState", v.ProvisioningState)
17916	populate(objectMap, "type", v.Type)
17917	populate(objectMap, "vpnSites", v.VPNSites)
17918	populate(objectMap, "virtualHubs", v.VirtualHubs)
17919	return json.Marshal(objectMap)
17920}
17921
17922// VirtualWanSecurityProvider - Collection of SecurityProviders.
17923type VirtualWanSecurityProvider struct {
17924	// Name of the security provider.
17925	Name *string `json:"name,omitempty"`
17926
17927	// Url of the security provider.
17928	URL *string `json:"url,omitempty"`
17929
17930	// READ-ONLY; Name of the security provider.
17931	Type *VirtualWanSecurityProviderType `json:"type,omitempty" azure:"ro"`
17932}
17933
17934// VirtualWanSecurityProviders - Collection of SecurityProviders.
17935type VirtualWanSecurityProviders struct {
17936	// List of VirtualWAN security providers.
17937	SupportedProviders []*VirtualWanSecurityProvider `json:"supportedProviders,omitempty"`
17938}
17939
17940// MarshalJSON implements the json.Marshaller interface for type VirtualWanSecurityProviders.
17941func (v VirtualWanSecurityProviders) MarshalJSON() ([]byte, error) {
17942	objectMap := make(map[string]interface{})
17943	populate(objectMap, "supportedProviders", v.SupportedProviders)
17944	return json.Marshal(objectMap)
17945}
17946
17947// VirtualWanVPNProfileParameters - Virtual Wan Vpn profile parameters Vpn profile generation.
17948type VirtualWanVPNProfileParameters struct {
17949	// VPN client authentication method.
17950	AuthenticationMethod *AuthenticationMethod `json:"authenticationMethod,omitempty"`
17951
17952	// VpnServerConfiguration partial resource uri with which VirtualWan is associated to.
17953	VPNServerConfigurationResourceID *string `json:"vpnServerConfigurationResourceId,omitempty"`
17954}
17955
17956// VirtualWansBeginCreateOrUpdateOptions contains the optional parameters for the VirtualWans.BeginCreateOrUpdate method.
17957type VirtualWansBeginCreateOrUpdateOptions struct {
17958	// placeholder for future optional parameters
17959}
17960
17961// VirtualWansBeginDeleteOptions contains the optional parameters for the VirtualWans.BeginDelete method.
17962type VirtualWansBeginDeleteOptions struct {
17963	// placeholder for future optional parameters
17964}
17965
17966// VirtualWansGetOptions contains the optional parameters for the VirtualWans.Get method.
17967type VirtualWansGetOptions struct {
17968	// placeholder for future optional parameters
17969}
17970
17971// VirtualWansListByResourceGroupOptions contains the optional parameters for the VirtualWans.ListByResourceGroup method.
17972type VirtualWansListByResourceGroupOptions struct {
17973	// placeholder for future optional parameters
17974}
17975
17976// VirtualWansListOptions contains the optional parameters for the VirtualWans.List method.
17977type VirtualWansListOptions struct {
17978	// placeholder for future optional parameters
17979}
17980
17981// VirtualWansUpdateTagsOptions contains the optional parameters for the VirtualWans.UpdateTags method.
17982type VirtualWansUpdateTagsOptions struct {
17983	// placeholder for future optional parameters
17984}
17985
17986// VnetRoute - List of routes that control routing from VirtualHub into a virtual network connection.
17987type VnetRoute struct {
17988	// List of all Static Routes.
17989	StaticRoutes []*StaticRoute `json:"staticRoutes,omitempty"`
17990}
17991
17992// MarshalJSON implements the json.Marshaller interface for type VnetRoute.
17993func (v VnetRoute) MarshalJSON() ([]byte, error) {
17994	objectMap := make(map[string]interface{})
17995	populate(objectMap, "staticRoutes", v.StaticRoutes)
17996	return json.Marshal(objectMap)
17997}
17998
17999// WebApplicationFirewallCustomRule - Defines contents of a web application rule.
18000type WebApplicationFirewallCustomRule struct {
18001	// REQUIRED; Type of Actions.
18002	Action *WebApplicationFirewallAction `json:"action,omitempty"`
18003
18004	// REQUIRED; List of match conditions.
18005	MatchConditions []*MatchCondition `json:"matchConditions,omitempty"`
18006
18007	// REQUIRED; Priority of the rule. Rules with a lower value will be evaluated before rules with a higher value.
18008	Priority *int32 `json:"priority,omitempty"`
18009
18010	// REQUIRED; The rule type.
18011	RuleType *WebApplicationFirewallRuleType `json:"ruleType,omitempty"`
18012
18013	// The name of the resource that is unique within a policy. This name can be used to access the resource.
18014	Name *string `json:"name,omitempty"`
18015
18016	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
18017	Etag *string `json:"etag,omitempty" azure:"ro"`
18018}
18019
18020// MarshalJSON implements the json.Marshaller interface for type WebApplicationFirewallCustomRule.
18021func (w WebApplicationFirewallCustomRule) MarshalJSON() ([]byte, error) {
18022	objectMap := make(map[string]interface{})
18023	populate(objectMap, "action", w.Action)
18024	populate(objectMap, "etag", w.Etag)
18025	populate(objectMap, "matchConditions", w.MatchConditions)
18026	populate(objectMap, "name", w.Name)
18027	populate(objectMap, "priority", w.Priority)
18028	populate(objectMap, "ruleType", w.RuleType)
18029	return json.Marshal(objectMap)
18030}
18031
18032// WebApplicationFirewallPoliciesBeginDeleteOptions contains the optional parameters for the WebApplicationFirewallPolicies.BeginDelete method.
18033type WebApplicationFirewallPoliciesBeginDeleteOptions struct {
18034	// placeholder for future optional parameters
18035}
18036
18037// WebApplicationFirewallPoliciesCreateOrUpdateOptions contains the optional parameters for the WebApplicationFirewallPolicies.CreateOrUpdate method.
18038type WebApplicationFirewallPoliciesCreateOrUpdateOptions struct {
18039	// placeholder for future optional parameters
18040}
18041
18042// WebApplicationFirewallPoliciesGetOptions contains the optional parameters for the WebApplicationFirewallPolicies.Get method.
18043type WebApplicationFirewallPoliciesGetOptions struct {
18044	// placeholder for future optional parameters
18045}
18046
18047// WebApplicationFirewallPoliciesListAllOptions contains the optional parameters for the WebApplicationFirewallPolicies.ListAll method.
18048type WebApplicationFirewallPoliciesListAllOptions struct {
18049	// placeholder for future optional parameters
18050}
18051
18052// WebApplicationFirewallPoliciesListOptions contains the optional parameters for the WebApplicationFirewallPolicies.List method.
18053type WebApplicationFirewallPoliciesListOptions struct {
18054	// placeholder for future optional parameters
18055}
18056
18057// WebApplicationFirewallPolicy - Defines web application firewall policy.
18058type WebApplicationFirewallPolicy struct {
18059	Resource
18060	// Properties of the web application firewall policy.
18061	Properties *WebApplicationFirewallPolicyPropertiesFormat `json:"properties,omitempty"`
18062
18063	// READ-ONLY; A unique read-only string that changes whenever the resource is updated.
18064	Etag *string `json:"etag,omitempty" azure:"ro"`
18065}
18066
18067// MarshalJSON implements the json.Marshaller interface for type WebApplicationFirewallPolicy.
18068func (w WebApplicationFirewallPolicy) MarshalJSON() ([]byte, error) {
18069	objectMap := w.Resource.marshalInternal()
18070	populate(objectMap, "etag", w.Etag)
18071	populate(objectMap, "properties", w.Properties)
18072	return json.Marshal(objectMap)
18073}
18074
18075// WebApplicationFirewallPolicyListResult - Result of the request to list WebApplicationFirewallPolicies. It contains a list of WebApplicationFirewallPolicy
18076// objects and a URL link to get the next set of results.
18077type WebApplicationFirewallPolicyListResult struct {
18078	// READ-ONLY; URL to get the next set of WebApplicationFirewallPolicy objects if there are any.
18079	NextLink *string `json:"nextLink,omitempty" azure:"ro"`
18080
18081	// READ-ONLY; List of WebApplicationFirewallPolicies within a resource group.
18082	Value []*WebApplicationFirewallPolicy `json:"value,omitempty" azure:"ro"`
18083}
18084
18085// MarshalJSON implements the json.Marshaller interface for type WebApplicationFirewallPolicyListResult.
18086func (w WebApplicationFirewallPolicyListResult) MarshalJSON() ([]byte, error) {
18087	objectMap := make(map[string]interface{})
18088	populate(objectMap, "nextLink", w.NextLink)
18089	populate(objectMap, "value", w.Value)
18090	return json.Marshal(objectMap)
18091}
18092
18093// WebApplicationFirewallPolicyPropertiesFormat - Defines web application firewall policy properties.
18094type WebApplicationFirewallPolicyPropertiesFormat struct {
18095	// REQUIRED; Describes the managedRules structure.
18096	ManagedRules *ManagedRulesDefinition `json:"managedRules,omitempty"`
18097
18098	// The custom rules inside the policy.
18099	CustomRules []*WebApplicationFirewallCustomRule `json:"customRules,omitempty"`
18100
18101	// The PolicySettings for policy.
18102	PolicySettings *PolicySettings `json:"policySettings,omitempty"`
18103
18104	// READ-ONLY; A collection of references to application gateways.
18105	ApplicationGateways []*ApplicationGateway `json:"applicationGateways,omitempty" azure:"ro"`
18106
18107	// READ-ONLY; A collection of references to application gateway http listeners.
18108	HTTPListeners []*SubResource `json:"httpListeners,omitempty" azure:"ro"`
18109
18110	// READ-ONLY; A collection of references to application gateway path rules.
18111	PathBasedRules []*SubResource `json:"pathBasedRules,omitempty" azure:"ro"`
18112
18113	// READ-ONLY; The provisioning state of the web application firewall policy resource.
18114	ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"`
18115
18116	// READ-ONLY; Resource status of the policy.
18117	ResourceState *WebApplicationFirewallPolicyResourceState `json:"resourceState,omitempty" azure:"ro"`
18118}
18119
18120// MarshalJSON implements the json.Marshaller interface for type WebApplicationFirewallPolicyPropertiesFormat.
18121func (w WebApplicationFirewallPolicyPropertiesFormat) MarshalJSON() ([]byte, error) {
18122	objectMap := make(map[string]interface{})
18123	populate(objectMap, "applicationGateways", w.ApplicationGateways)
18124	populate(objectMap, "customRules", w.CustomRules)
18125	populate(objectMap, "httpListeners", w.HTTPListeners)
18126	populate(objectMap, "managedRules", w.ManagedRules)
18127	populate(objectMap, "pathBasedRules", w.PathBasedRules)
18128	populate(objectMap, "policySettings", w.PolicySettings)
18129	populate(objectMap, "provisioningState", w.ProvisioningState)
18130	populate(objectMap, "resourceState", w.ResourceState)
18131	return json.Marshal(objectMap)
18132}
18133
18134// WebCategoriesGetOptions contains the optional parameters for the WebCategories.Get method.
18135type WebCategoriesGetOptions struct {
18136	// Expands resourceIds back referenced by the azureWebCategory resource.
18137	Expand *string
18138}
18139
18140// WebCategoriesListBySubscriptionOptions contains the optional parameters for the WebCategories.ListBySubscription method.
18141type WebCategoriesListBySubscriptionOptions struct {
18142	// placeholder for future optional parameters
18143}
18144
18145func populate(m map[string]interface{}, k string, v interface{}) {
18146	if v == nil {
18147		return
18148	} else if azcore.IsNullValue(v) {
18149		m[k] = nil
18150	} else if !reflect.ValueOf(v).IsNil() {
18151		m[k] = v
18152	}
18153}
18154
18155func unpopulate(data json.RawMessage, v interface{}) error {
18156	if data == nil {
18157		return nil
18158	}
18159	return json.Unmarshal(data, v)
18160}
18161