Skip to main content

aws_sdk_directconnect/operation/update_virtual_interface_attributes/
_update_virtual_interface_attributes_output.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2
3/// <p>Information about a virtual interface.</p>
4#[non_exhaustive]
5#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
6pub struct UpdateVirtualInterfaceAttributesOutput {
7    /// <p>The ID of the Amazon Web Services account that owns the virtual interface.</p>
8    pub owner_account: ::std::option::Option<::std::string::String>,
9    /// <p>The ID of the virtual interface.</p>
10    pub virtual_interface_id: ::std::option::Option<::std::string::String>,
11    /// <p>The location of the connection.</p>
12    pub location: ::std::option::Option<::std::string::String>,
13    /// <p>The ID of the connection.</p>
14    pub connection_id: ::std::option::Option<::std::string::String>,
15    /// <p>The type of virtual interface. The possible values are <code>private</code>, <code>public</code> and <code>transit</code>.</p>
16    pub virtual_interface_type: ::std::option::Option<::std::string::String>,
17    /// <p>The name of the virtual interface assigned by the customer network. The name has a maximum of 100 characters. The following are valid characters: a-z, 0-9 and a hyphen (-).</p>
18    pub virtual_interface_name: ::std::option::Option<::std::string::String>,
19    /// <p>The ID of the VLAN.</p>
20    pub vlan: i32,
21    /// <p>The autonomous system number (ASN). The valid range is from 1 to 2147483646 for Border Gateway Protocol (BGP) configuration. If you provide a number greater than the maximum, an error is returned. Use <code>asnLong</code> instead.</p><note>
22    /// <p>You can use <code>asnLong</code> or <code>asn</code>, but not both. We recommend using <code>asnLong</code> as it supports a greater pool of numbers.</p>
23    /// <ul>
24    /// <li>
25    /// <p>The <code>asnLong</code> attribute accepts both ASN and long ASN ranges.</p></li>
26    /// <li>
27    /// <p>If you provide a value in the same API call for both <code>asn</code> and <code>asnLong</code>, the API will only accept the value for <code>asnLong</code>.</p></li>
28    /// </ul>
29    /// </note>
30    pub asn: i32,
31    /// <p>The long ASN for the virtual interface. The valid range is from 1 to 4294967294 for BGP configuration.</p><note>
32    /// <p>You can use <code>asnLong</code> or <code>asn</code>, but not both. We recommend using <code>asnLong</code> as it supports a greater pool of numbers.</p>
33    /// <ul>
34    /// <li>
35    /// <p>The <code>asnLong</code> attribute accepts both ASN and long ASN ranges.</p></li>
36    /// <li>
37    /// <p>If you provide a value in the same API call for both <code>asn</code> and <code>asnLong</code>, the API will only accept the value for <code>asnLong</code>.</p></li>
38    /// </ul>
39    /// </note>
40    pub asn_long: ::std::option::Option<i64>,
41    /// <p>The autonomous system number (AS) for the Amazon side of the connection.</p>
42    pub amazon_side_asn: ::std::option::Option<i64>,
43    /// <p>The authentication key for BGP configuration. This string has a minimum length of 6 characters and and a maximun lenth of 80 characters.</p>
44    pub auth_key: ::std::option::Option<::std::string::String>,
45    /// <p>The IP address assigned to the Amazon interface.</p>
46    pub amazon_address: ::std::option::Option<::std::string::String>,
47    /// <p>The IP address assigned to the customer interface.</p>
48    pub customer_address: ::std::option::Option<::std::string::String>,
49    /// <p>The address family for the BGP peer.</p>
50    pub address_family: ::std::option::Option<crate::types::AddressFamily>,
51    /// <p>The state of the virtual interface. The following are the possible values:</p>
52    /// <ul>
53    /// <li>
54    /// <p><code>confirming</code>: The creation of the virtual interface is pending confirmation from the virtual interface owner. If the owner of the virtual interface is different from the owner of the connection on which it is provisioned, then the virtual interface will remain in this state until it is confirmed by the virtual interface owner.</p></li>
55    /// <li>
56    /// <p><code>verifying</code>: This state only applies to public virtual interfaces. Each public virtual interface needs validation before the virtual interface can be created.</p></li>
57    /// <li>
58    /// <p><code>pending</code>: A virtual interface is in this state from the time that it is created until the virtual interface is ready to forward traffic.</p></li>
59    /// <li>
60    /// <p><code>available</code>: A virtual interface that is able to forward traffic.</p></li>
61    /// <li>
62    /// <p><code>down</code>: A virtual interface that is BGP down.</p></li>
63    /// <li>
64    /// <p><code>testing</code>: A virtual interface is in this state immediately after calling <code>StartBgpFailoverTest</code> and remains in this state during the duration of the test.</p></li>
65    /// <li>
66    /// <p><code>deleting</code>: A virtual interface is in this state immediately after calling <code>DeleteVirtualInterface</code> until it can no longer forward traffic.</p></li>
67    /// <li>
68    /// <p><code>deleted</code>: A virtual interface that cannot forward traffic.</p></li>
69    /// <li>
70    /// <p><code>rejected</code>: The virtual interface owner has declined creation of the virtual interface. If a virtual interface in the <code>Confirming</code> state is deleted by the virtual interface owner, the virtual interface enters the <code>Rejected</code> state.</p></li>
71    /// <li>
72    /// <p><code>unknown</code>: The state of the virtual interface is not available.</p></li>
73    /// </ul>
74    pub virtual_interface_state: ::std::option::Option<crate::types::VirtualInterfaceState>,
75    /// <p>The customer router configuration.</p>
76    pub customer_router_config: ::std::option::Option<::std::string::String>,
77    /// <p>The maximum transmission unit (MTU), in bytes. The supported values are 1500 and 8500. The default value is 1500</p>
78    pub mtu: ::std::option::Option<i32>,
79    /// <p>Indicates whether jumbo frames are supported.</p>
80    pub jumbo_frame_capable: ::std::option::Option<bool>,
81    /// <p>The ID of the virtual private gateway. Applies only to private virtual interfaces.</p>
82    pub virtual_gateway_id: ::std::option::Option<::std::string::String>,
83    /// <p>The ID of the Direct Connect gateway.</p>
84    pub direct_connect_gateway_id: ::std::option::Option<::std::string::String>,
85    /// <p>The routes to be advertised to the Amazon Web Services network in this Region. Applies to public virtual interfaces.</p>
86    pub route_filter_prefixes: ::std::option::Option<::std::vec::Vec<crate::types::RouteFilterPrefix>>,
87    /// <p>The BGP peers configured on this virtual interface.</p>
88    pub bgp_peers: ::std::option::Option<::std::vec::Vec<crate::types::BgpPeer>>,
89    /// <p>The Amazon Web Services Region where the virtual interface is located.</p>
90    pub region: ::std::option::Option<::std::string::String>,
91    /// <p>The Direct Connect endpoint that terminates the physical connection.</p>
92    pub aws_device_v2: ::std::option::Option<::std::string::String>,
93    /// <p>The Direct Connect endpoint that terminates the logical connection. This device might be different than the device that terminates the physical connection.</p>
94    pub aws_logical_device_id: ::std::option::Option<::std::string::String>,
95    /// <p>The tags associated with the virtual interface.</p>
96    pub tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
97    /// <p>Indicates whether SiteLink is enabled.</p>
98    pub site_link_enabled: ::std::option::Option<bool>,
99    _request_id: Option<String>,
100}
101impl UpdateVirtualInterfaceAttributesOutput {
102    /// <p>The ID of the Amazon Web Services account that owns the virtual interface.</p>
103    pub fn owner_account(&self) -> ::std::option::Option<&str> {
104        self.owner_account.as_deref()
105    }
106    /// <p>The ID of the virtual interface.</p>
107    pub fn virtual_interface_id(&self) -> ::std::option::Option<&str> {
108        self.virtual_interface_id.as_deref()
109    }
110    /// <p>The location of the connection.</p>
111    pub fn location(&self) -> ::std::option::Option<&str> {
112        self.location.as_deref()
113    }
114    /// <p>The ID of the connection.</p>
115    pub fn connection_id(&self) -> ::std::option::Option<&str> {
116        self.connection_id.as_deref()
117    }
118    /// <p>The type of virtual interface. The possible values are <code>private</code>, <code>public</code> and <code>transit</code>.</p>
119    pub fn virtual_interface_type(&self) -> ::std::option::Option<&str> {
120        self.virtual_interface_type.as_deref()
121    }
122    /// <p>The name of the virtual interface assigned by the customer network. The name has a maximum of 100 characters. The following are valid characters: a-z, 0-9 and a hyphen (-).</p>
123    pub fn virtual_interface_name(&self) -> ::std::option::Option<&str> {
124        self.virtual_interface_name.as_deref()
125    }
126    /// <p>The ID of the VLAN.</p>
127    pub fn vlan(&self) -> i32 {
128        self.vlan
129    }
130    /// <p>The autonomous system number (ASN). The valid range is from 1 to 2147483646 for Border Gateway Protocol (BGP) configuration. If you provide a number greater than the maximum, an error is returned. Use <code>asnLong</code> instead.</p><note>
131    /// <p>You can use <code>asnLong</code> or <code>asn</code>, but not both. We recommend using <code>asnLong</code> as it supports a greater pool of numbers.</p>
132    /// <ul>
133    /// <li>
134    /// <p>The <code>asnLong</code> attribute accepts both ASN and long ASN ranges.</p></li>
135    /// <li>
136    /// <p>If you provide a value in the same API call for both <code>asn</code> and <code>asnLong</code>, the API will only accept the value for <code>asnLong</code>.</p></li>
137    /// </ul>
138    /// </note>
139    pub fn asn(&self) -> i32 {
140        self.asn
141    }
142    /// <p>The long ASN for the virtual interface. The valid range is from 1 to 4294967294 for BGP configuration.</p><note>
143    /// <p>You can use <code>asnLong</code> or <code>asn</code>, but not both. We recommend using <code>asnLong</code> as it supports a greater pool of numbers.</p>
144    /// <ul>
145    /// <li>
146    /// <p>The <code>asnLong</code> attribute accepts both ASN and long ASN ranges.</p></li>
147    /// <li>
148    /// <p>If you provide a value in the same API call for both <code>asn</code> and <code>asnLong</code>, the API will only accept the value for <code>asnLong</code>.</p></li>
149    /// </ul>
150    /// </note>
151    pub fn asn_long(&self) -> ::std::option::Option<i64> {
152        self.asn_long
153    }
154    /// <p>The autonomous system number (AS) for the Amazon side of the connection.</p>
155    pub fn amazon_side_asn(&self) -> ::std::option::Option<i64> {
156        self.amazon_side_asn
157    }
158    /// <p>The authentication key for BGP configuration. This string has a minimum length of 6 characters and and a maximun lenth of 80 characters.</p>
159    pub fn auth_key(&self) -> ::std::option::Option<&str> {
160        self.auth_key.as_deref()
161    }
162    /// <p>The IP address assigned to the Amazon interface.</p>
163    pub fn amazon_address(&self) -> ::std::option::Option<&str> {
164        self.amazon_address.as_deref()
165    }
166    /// <p>The IP address assigned to the customer interface.</p>
167    pub fn customer_address(&self) -> ::std::option::Option<&str> {
168        self.customer_address.as_deref()
169    }
170    /// <p>The address family for the BGP peer.</p>
171    pub fn address_family(&self) -> ::std::option::Option<&crate::types::AddressFamily> {
172        self.address_family.as_ref()
173    }
174    /// <p>The state of the virtual interface. The following are the possible values:</p>
175    /// <ul>
176    /// <li>
177    /// <p><code>confirming</code>: The creation of the virtual interface is pending confirmation from the virtual interface owner. If the owner of the virtual interface is different from the owner of the connection on which it is provisioned, then the virtual interface will remain in this state until it is confirmed by the virtual interface owner.</p></li>
178    /// <li>
179    /// <p><code>verifying</code>: This state only applies to public virtual interfaces. Each public virtual interface needs validation before the virtual interface can be created.</p></li>
180    /// <li>
181    /// <p><code>pending</code>: A virtual interface is in this state from the time that it is created until the virtual interface is ready to forward traffic.</p></li>
182    /// <li>
183    /// <p><code>available</code>: A virtual interface that is able to forward traffic.</p></li>
184    /// <li>
185    /// <p><code>down</code>: A virtual interface that is BGP down.</p></li>
186    /// <li>
187    /// <p><code>testing</code>: A virtual interface is in this state immediately after calling <code>StartBgpFailoverTest</code> and remains in this state during the duration of the test.</p></li>
188    /// <li>
189    /// <p><code>deleting</code>: A virtual interface is in this state immediately after calling <code>DeleteVirtualInterface</code> until it can no longer forward traffic.</p></li>
190    /// <li>
191    /// <p><code>deleted</code>: A virtual interface that cannot forward traffic.</p></li>
192    /// <li>
193    /// <p><code>rejected</code>: The virtual interface owner has declined creation of the virtual interface. If a virtual interface in the <code>Confirming</code> state is deleted by the virtual interface owner, the virtual interface enters the <code>Rejected</code> state.</p></li>
194    /// <li>
195    /// <p><code>unknown</code>: The state of the virtual interface is not available.</p></li>
196    /// </ul>
197    pub fn virtual_interface_state(&self) -> ::std::option::Option<&crate::types::VirtualInterfaceState> {
198        self.virtual_interface_state.as_ref()
199    }
200    /// <p>The customer router configuration.</p>
201    pub fn customer_router_config(&self) -> ::std::option::Option<&str> {
202        self.customer_router_config.as_deref()
203    }
204    /// <p>The maximum transmission unit (MTU), in bytes. The supported values are 1500 and 8500. The default value is 1500</p>
205    pub fn mtu(&self) -> ::std::option::Option<i32> {
206        self.mtu
207    }
208    /// <p>Indicates whether jumbo frames are supported.</p>
209    pub fn jumbo_frame_capable(&self) -> ::std::option::Option<bool> {
210        self.jumbo_frame_capable
211    }
212    /// <p>The ID of the virtual private gateway. Applies only to private virtual interfaces.</p>
213    pub fn virtual_gateway_id(&self) -> ::std::option::Option<&str> {
214        self.virtual_gateway_id.as_deref()
215    }
216    /// <p>The ID of the Direct Connect gateway.</p>
217    pub fn direct_connect_gateway_id(&self) -> ::std::option::Option<&str> {
218        self.direct_connect_gateway_id.as_deref()
219    }
220    /// <p>The routes to be advertised to the Amazon Web Services network in this Region. Applies to public virtual interfaces.</p>
221    ///
222    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.route_filter_prefixes.is_none()`.
223    pub fn route_filter_prefixes(&self) -> &[crate::types::RouteFilterPrefix] {
224        self.route_filter_prefixes.as_deref().unwrap_or_default()
225    }
226    /// <p>The BGP peers configured on this virtual interface.</p>
227    ///
228    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.bgp_peers.is_none()`.
229    pub fn bgp_peers(&self) -> &[crate::types::BgpPeer] {
230        self.bgp_peers.as_deref().unwrap_or_default()
231    }
232    /// <p>The Amazon Web Services Region where the virtual interface is located.</p>
233    pub fn region(&self) -> ::std::option::Option<&str> {
234        self.region.as_deref()
235    }
236    /// <p>The Direct Connect endpoint that terminates the physical connection.</p>
237    pub fn aws_device_v2(&self) -> ::std::option::Option<&str> {
238        self.aws_device_v2.as_deref()
239    }
240    /// <p>The Direct Connect endpoint that terminates the logical connection. This device might be different than the device that terminates the physical connection.</p>
241    pub fn aws_logical_device_id(&self) -> ::std::option::Option<&str> {
242        self.aws_logical_device_id.as_deref()
243    }
244    /// <p>The tags associated with the virtual interface.</p>
245    ///
246    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tags.is_none()`.
247    pub fn tags(&self) -> &[crate::types::Tag] {
248        self.tags.as_deref().unwrap_or_default()
249    }
250    /// <p>Indicates whether SiteLink is enabled.</p>
251    pub fn site_link_enabled(&self) -> ::std::option::Option<bool> {
252        self.site_link_enabled
253    }
254}
255impl ::aws_types::request_id::RequestId for UpdateVirtualInterfaceAttributesOutput {
256    fn request_id(&self) -> Option<&str> {
257        self._request_id.as_deref()
258    }
259}
260impl UpdateVirtualInterfaceAttributesOutput {
261    /// Creates a new builder-style object to manufacture [`UpdateVirtualInterfaceAttributesOutput`](crate::operation::update_virtual_interface_attributes::UpdateVirtualInterfaceAttributesOutput).
262    pub fn builder() -> crate::operation::update_virtual_interface_attributes::builders::UpdateVirtualInterfaceAttributesOutputBuilder {
263        crate::operation::update_virtual_interface_attributes::builders::UpdateVirtualInterfaceAttributesOutputBuilder::default()
264    }
265}
266
267/// A builder for [`UpdateVirtualInterfaceAttributesOutput`](crate::operation::update_virtual_interface_attributes::UpdateVirtualInterfaceAttributesOutput).
268#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
269#[non_exhaustive]
270pub struct UpdateVirtualInterfaceAttributesOutputBuilder {
271    pub(crate) owner_account: ::std::option::Option<::std::string::String>,
272    pub(crate) virtual_interface_id: ::std::option::Option<::std::string::String>,
273    pub(crate) location: ::std::option::Option<::std::string::String>,
274    pub(crate) connection_id: ::std::option::Option<::std::string::String>,
275    pub(crate) virtual_interface_type: ::std::option::Option<::std::string::String>,
276    pub(crate) virtual_interface_name: ::std::option::Option<::std::string::String>,
277    pub(crate) vlan: ::std::option::Option<i32>,
278    pub(crate) asn: ::std::option::Option<i32>,
279    pub(crate) asn_long: ::std::option::Option<i64>,
280    pub(crate) amazon_side_asn: ::std::option::Option<i64>,
281    pub(crate) auth_key: ::std::option::Option<::std::string::String>,
282    pub(crate) amazon_address: ::std::option::Option<::std::string::String>,
283    pub(crate) customer_address: ::std::option::Option<::std::string::String>,
284    pub(crate) address_family: ::std::option::Option<crate::types::AddressFamily>,
285    pub(crate) virtual_interface_state: ::std::option::Option<crate::types::VirtualInterfaceState>,
286    pub(crate) customer_router_config: ::std::option::Option<::std::string::String>,
287    pub(crate) mtu: ::std::option::Option<i32>,
288    pub(crate) jumbo_frame_capable: ::std::option::Option<bool>,
289    pub(crate) virtual_gateway_id: ::std::option::Option<::std::string::String>,
290    pub(crate) direct_connect_gateway_id: ::std::option::Option<::std::string::String>,
291    pub(crate) route_filter_prefixes: ::std::option::Option<::std::vec::Vec<crate::types::RouteFilterPrefix>>,
292    pub(crate) bgp_peers: ::std::option::Option<::std::vec::Vec<crate::types::BgpPeer>>,
293    pub(crate) region: ::std::option::Option<::std::string::String>,
294    pub(crate) aws_device_v2: ::std::option::Option<::std::string::String>,
295    pub(crate) aws_logical_device_id: ::std::option::Option<::std::string::String>,
296    pub(crate) tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
297    pub(crate) site_link_enabled: ::std::option::Option<bool>,
298    _request_id: Option<String>,
299}
300impl UpdateVirtualInterfaceAttributesOutputBuilder {
301    /// <p>The ID of the Amazon Web Services account that owns the virtual interface.</p>
302    pub fn owner_account(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
303        self.owner_account = ::std::option::Option::Some(input.into());
304        self
305    }
306    /// <p>The ID of the Amazon Web Services account that owns the virtual interface.</p>
307    pub fn set_owner_account(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
308        self.owner_account = input;
309        self
310    }
311    /// <p>The ID of the Amazon Web Services account that owns the virtual interface.</p>
312    pub fn get_owner_account(&self) -> &::std::option::Option<::std::string::String> {
313        &self.owner_account
314    }
315    /// <p>The ID of the virtual interface.</p>
316    pub fn virtual_interface_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
317        self.virtual_interface_id = ::std::option::Option::Some(input.into());
318        self
319    }
320    /// <p>The ID of the virtual interface.</p>
321    pub fn set_virtual_interface_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
322        self.virtual_interface_id = input;
323        self
324    }
325    /// <p>The ID of the virtual interface.</p>
326    pub fn get_virtual_interface_id(&self) -> &::std::option::Option<::std::string::String> {
327        &self.virtual_interface_id
328    }
329    /// <p>The location of the connection.</p>
330    pub fn location(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
331        self.location = ::std::option::Option::Some(input.into());
332        self
333    }
334    /// <p>The location of the connection.</p>
335    pub fn set_location(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
336        self.location = input;
337        self
338    }
339    /// <p>The location of the connection.</p>
340    pub fn get_location(&self) -> &::std::option::Option<::std::string::String> {
341        &self.location
342    }
343    /// <p>The ID of the connection.</p>
344    pub fn connection_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
345        self.connection_id = ::std::option::Option::Some(input.into());
346        self
347    }
348    /// <p>The ID of the connection.</p>
349    pub fn set_connection_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
350        self.connection_id = input;
351        self
352    }
353    /// <p>The ID of the connection.</p>
354    pub fn get_connection_id(&self) -> &::std::option::Option<::std::string::String> {
355        &self.connection_id
356    }
357    /// <p>The type of virtual interface. The possible values are <code>private</code>, <code>public</code> and <code>transit</code>.</p>
358    pub fn virtual_interface_type(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
359        self.virtual_interface_type = ::std::option::Option::Some(input.into());
360        self
361    }
362    /// <p>The type of virtual interface. The possible values are <code>private</code>, <code>public</code> and <code>transit</code>.</p>
363    pub fn set_virtual_interface_type(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
364        self.virtual_interface_type = input;
365        self
366    }
367    /// <p>The type of virtual interface. The possible values are <code>private</code>, <code>public</code> and <code>transit</code>.</p>
368    pub fn get_virtual_interface_type(&self) -> &::std::option::Option<::std::string::String> {
369        &self.virtual_interface_type
370    }
371    /// <p>The name of the virtual interface assigned by the customer network. The name has a maximum of 100 characters. The following are valid characters: a-z, 0-9 and a hyphen (-).</p>
372    pub fn virtual_interface_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
373        self.virtual_interface_name = ::std::option::Option::Some(input.into());
374        self
375    }
376    /// <p>The name of the virtual interface assigned by the customer network. The name has a maximum of 100 characters. The following are valid characters: a-z, 0-9 and a hyphen (-).</p>
377    pub fn set_virtual_interface_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
378        self.virtual_interface_name = input;
379        self
380    }
381    /// <p>The name of the virtual interface assigned by the customer network. The name has a maximum of 100 characters. The following are valid characters: a-z, 0-9 and a hyphen (-).</p>
382    pub fn get_virtual_interface_name(&self) -> &::std::option::Option<::std::string::String> {
383        &self.virtual_interface_name
384    }
385    /// <p>The ID of the VLAN.</p>
386    pub fn vlan(mut self, input: i32) -> Self {
387        self.vlan = ::std::option::Option::Some(input);
388        self
389    }
390    /// <p>The ID of the VLAN.</p>
391    pub fn set_vlan(mut self, input: ::std::option::Option<i32>) -> Self {
392        self.vlan = input;
393        self
394    }
395    /// <p>The ID of the VLAN.</p>
396    pub fn get_vlan(&self) -> &::std::option::Option<i32> {
397        &self.vlan
398    }
399    /// <p>The autonomous system number (ASN). The valid range is from 1 to 2147483646 for Border Gateway Protocol (BGP) configuration. If you provide a number greater than the maximum, an error is returned. Use <code>asnLong</code> instead.</p><note>
400    /// <p>You can use <code>asnLong</code> or <code>asn</code>, but not both. We recommend using <code>asnLong</code> as it supports a greater pool of numbers.</p>
401    /// <ul>
402    /// <li>
403    /// <p>The <code>asnLong</code> attribute accepts both ASN and long ASN ranges.</p></li>
404    /// <li>
405    /// <p>If you provide a value in the same API call for both <code>asn</code> and <code>asnLong</code>, the API will only accept the value for <code>asnLong</code>.</p></li>
406    /// </ul>
407    /// </note>
408    pub fn asn(mut self, input: i32) -> Self {
409        self.asn = ::std::option::Option::Some(input);
410        self
411    }
412    /// <p>The autonomous system number (ASN). The valid range is from 1 to 2147483646 for Border Gateway Protocol (BGP) configuration. If you provide a number greater than the maximum, an error is returned. Use <code>asnLong</code> instead.</p><note>
413    /// <p>You can use <code>asnLong</code> or <code>asn</code>, but not both. We recommend using <code>asnLong</code> as it supports a greater pool of numbers.</p>
414    /// <ul>
415    /// <li>
416    /// <p>The <code>asnLong</code> attribute accepts both ASN and long ASN ranges.</p></li>
417    /// <li>
418    /// <p>If you provide a value in the same API call for both <code>asn</code> and <code>asnLong</code>, the API will only accept the value for <code>asnLong</code>.</p></li>
419    /// </ul>
420    /// </note>
421    pub fn set_asn(mut self, input: ::std::option::Option<i32>) -> Self {
422        self.asn = input;
423        self
424    }
425    /// <p>The autonomous system number (ASN). The valid range is from 1 to 2147483646 for Border Gateway Protocol (BGP) configuration. If you provide a number greater than the maximum, an error is returned. Use <code>asnLong</code> instead.</p><note>
426    /// <p>You can use <code>asnLong</code> or <code>asn</code>, but not both. We recommend using <code>asnLong</code> as it supports a greater pool of numbers.</p>
427    /// <ul>
428    /// <li>
429    /// <p>The <code>asnLong</code> attribute accepts both ASN and long ASN ranges.</p></li>
430    /// <li>
431    /// <p>If you provide a value in the same API call for both <code>asn</code> and <code>asnLong</code>, the API will only accept the value for <code>asnLong</code>.</p></li>
432    /// </ul>
433    /// </note>
434    pub fn get_asn(&self) -> &::std::option::Option<i32> {
435        &self.asn
436    }
437    /// <p>The long ASN for the virtual interface. The valid range is from 1 to 4294967294 for BGP configuration.</p><note>
438    /// <p>You can use <code>asnLong</code> or <code>asn</code>, but not both. We recommend using <code>asnLong</code> as it supports a greater pool of numbers.</p>
439    /// <ul>
440    /// <li>
441    /// <p>The <code>asnLong</code> attribute accepts both ASN and long ASN ranges.</p></li>
442    /// <li>
443    /// <p>If you provide a value in the same API call for both <code>asn</code> and <code>asnLong</code>, the API will only accept the value for <code>asnLong</code>.</p></li>
444    /// </ul>
445    /// </note>
446    pub fn asn_long(mut self, input: i64) -> Self {
447        self.asn_long = ::std::option::Option::Some(input);
448        self
449    }
450    /// <p>The long ASN for the virtual interface. The valid range is from 1 to 4294967294 for BGP configuration.</p><note>
451    /// <p>You can use <code>asnLong</code> or <code>asn</code>, but not both. We recommend using <code>asnLong</code> as it supports a greater pool of numbers.</p>
452    /// <ul>
453    /// <li>
454    /// <p>The <code>asnLong</code> attribute accepts both ASN and long ASN ranges.</p></li>
455    /// <li>
456    /// <p>If you provide a value in the same API call for both <code>asn</code> and <code>asnLong</code>, the API will only accept the value for <code>asnLong</code>.</p></li>
457    /// </ul>
458    /// </note>
459    pub fn set_asn_long(mut self, input: ::std::option::Option<i64>) -> Self {
460        self.asn_long = input;
461        self
462    }
463    /// <p>The long ASN for the virtual interface. The valid range is from 1 to 4294967294 for BGP configuration.</p><note>
464    /// <p>You can use <code>asnLong</code> or <code>asn</code>, but not both. We recommend using <code>asnLong</code> as it supports a greater pool of numbers.</p>
465    /// <ul>
466    /// <li>
467    /// <p>The <code>asnLong</code> attribute accepts both ASN and long ASN ranges.</p></li>
468    /// <li>
469    /// <p>If you provide a value in the same API call for both <code>asn</code> and <code>asnLong</code>, the API will only accept the value for <code>asnLong</code>.</p></li>
470    /// </ul>
471    /// </note>
472    pub fn get_asn_long(&self) -> &::std::option::Option<i64> {
473        &self.asn_long
474    }
475    /// <p>The autonomous system number (AS) for the Amazon side of the connection.</p>
476    pub fn amazon_side_asn(mut self, input: i64) -> Self {
477        self.amazon_side_asn = ::std::option::Option::Some(input);
478        self
479    }
480    /// <p>The autonomous system number (AS) for the Amazon side of the connection.</p>
481    pub fn set_amazon_side_asn(mut self, input: ::std::option::Option<i64>) -> Self {
482        self.amazon_side_asn = input;
483        self
484    }
485    /// <p>The autonomous system number (AS) for the Amazon side of the connection.</p>
486    pub fn get_amazon_side_asn(&self) -> &::std::option::Option<i64> {
487        &self.amazon_side_asn
488    }
489    /// <p>The authentication key for BGP configuration. This string has a minimum length of 6 characters and and a maximun lenth of 80 characters.</p>
490    pub fn auth_key(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
491        self.auth_key = ::std::option::Option::Some(input.into());
492        self
493    }
494    /// <p>The authentication key for BGP configuration. This string has a minimum length of 6 characters and and a maximun lenth of 80 characters.</p>
495    pub fn set_auth_key(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
496        self.auth_key = input;
497        self
498    }
499    /// <p>The authentication key for BGP configuration. This string has a minimum length of 6 characters and and a maximun lenth of 80 characters.</p>
500    pub fn get_auth_key(&self) -> &::std::option::Option<::std::string::String> {
501        &self.auth_key
502    }
503    /// <p>The IP address assigned to the Amazon interface.</p>
504    pub fn amazon_address(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
505        self.amazon_address = ::std::option::Option::Some(input.into());
506        self
507    }
508    /// <p>The IP address assigned to the Amazon interface.</p>
509    pub fn set_amazon_address(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
510        self.amazon_address = input;
511        self
512    }
513    /// <p>The IP address assigned to the Amazon interface.</p>
514    pub fn get_amazon_address(&self) -> &::std::option::Option<::std::string::String> {
515        &self.amazon_address
516    }
517    /// <p>The IP address assigned to the customer interface.</p>
518    pub fn customer_address(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
519        self.customer_address = ::std::option::Option::Some(input.into());
520        self
521    }
522    /// <p>The IP address assigned to the customer interface.</p>
523    pub fn set_customer_address(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
524        self.customer_address = input;
525        self
526    }
527    /// <p>The IP address assigned to the customer interface.</p>
528    pub fn get_customer_address(&self) -> &::std::option::Option<::std::string::String> {
529        &self.customer_address
530    }
531    /// <p>The address family for the BGP peer.</p>
532    pub fn address_family(mut self, input: crate::types::AddressFamily) -> Self {
533        self.address_family = ::std::option::Option::Some(input);
534        self
535    }
536    /// <p>The address family for the BGP peer.</p>
537    pub fn set_address_family(mut self, input: ::std::option::Option<crate::types::AddressFamily>) -> Self {
538        self.address_family = input;
539        self
540    }
541    /// <p>The address family for the BGP peer.</p>
542    pub fn get_address_family(&self) -> &::std::option::Option<crate::types::AddressFamily> {
543        &self.address_family
544    }
545    /// <p>The state of the virtual interface. The following are the possible values:</p>
546    /// <ul>
547    /// <li>
548    /// <p><code>confirming</code>: The creation of the virtual interface is pending confirmation from the virtual interface owner. If the owner of the virtual interface is different from the owner of the connection on which it is provisioned, then the virtual interface will remain in this state until it is confirmed by the virtual interface owner.</p></li>
549    /// <li>
550    /// <p><code>verifying</code>: This state only applies to public virtual interfaces. Each public virtual interface needs validation before the virtual interface can be created.</p></li>
551    /// <li>
552    /// <p><code>pending</code>: A virtual interface is in this state from the time that it is created until the virtual interface is ready to forward traffic.</p></li>
553    /// <li>
554    /// <p><code>available</code>: A virtual interface that is able to forward traffic.</p></li>
555    /// <li>
556    /// <p><code>down</code>: A virtual interface that is BGP down.</p></li>
557    /// <li>
558    /// <p><code>testing</code>: A virtual interface is in this state immediately after calling <code>StartBgpFailoverTest</code> and remains in this state during the duration of the test.</p></li>
559    /// <li>
560    /// <p><code>deleting</code>: A virtual interface is in this state immediately after calling <code>DeleteVirtualInterface</code> until it can no longer forward traffic.</p></li>
561    /// <li>
562    /// <p><code>deleted</code>: A virtual interface that cannot forward traffic.</p></li>
563    /// <li>
564    /// <p><code>rejected</code>: The virtual interface owner has declined creation of the virtual interface. If a virtual interface in the <code>Confirming</code> state is deleted by the virtual interface owner, the virtual interface enters the <code>Rejected</code> state.</p></li>
565    /// <li>
566    /// <p><code>unknown</code>: The state of the virtual interface is not available.</p></li>
567    /// </ul>
568    pub fn virtual_interface_state(mut self, input: crate::types::VirtualInterfaceState) -> Self {
569        self.virtual_interface_state = ::std::option::Option::Some(input);
570        self
571    }
572    /// <p>The state of the virtual interface. The following are the possible values:</p>
573    /// <ul>
574    /// <li>
575    /// <p><code>confirming</code>: The creation of the virtual interface is pending confirmation from the virtual interface owner. If the owner of the virtual interface is different from the owner of the connection on which it is provisioned, then the virtual interface will remain in this state until it is confirmed by the virtual interface owner.</p></li>
576    /// <li>
577    /// <p><code>verifying</code>: This state only applies to public virtual interfaces. Each public virtual interface needs validation before the virtual interface can be created.</p></li>
578    /// <li>
579    /// <p><code>pending</code>: A virtual interface is in this state from the time that it is created until the virtual interface is ready to forward traffic.</p></li>
580    /// <li>
581    /// <p><code>available</code>: A virtual interface that is able to forward traffic.</p></li>
582    /// <li>
583    /// <p><code>down</code>: A virtual interface that is BGP down.</p></li>
584    /// <li>
585    /// <p><code>testing</code>: A virtual interface is in this state immediately after calling <code>StartBgpFailoverTest</code> and remains in this state during the duration of the test.</p></li>
586    /// <li>
587    /// <p><code>deleting</code>: A virtual interface is in this state immediately after calling <code>DeleteVirtualInterface</code> until it can no longer forward traffic.</p></li>
588    /// <li>
589    /// <p><code>deleted</code>: A virtual interface that cannot forward traffic.</p></li>
590    /// <li>
591    /// <p><code>rejected</code>: The virtual interface owner has declined creation of the virtual interface. If a virtual interface in the <code>Confirming</code> state is deleted by the virtual interface owner, the virtual interface enters the <code>Rejected</code> state.</p></li>
592    /// <li>
593    /// <p><code>unknown</code>: The state of the virtual interface is not available.</p></li>
594    /// </ul>
595    pub fn set_virtual_interface_state(mut self, input: ::std::option::Option<crate::types::VirtualInterfaceState>) -> Self {
596        self.virtual_interface_state = input;
597        self
598    }
599    /// <p>The state of the virtual interface. The following are the possible values:</p>
600    /// <ul>
601    /// <li>
602    /// <p><code>confirming</code>: The creation of the virtual interface is pending confirmation from the virtual interface owner. If the owner of the virtual interface is different from the owner of the connection on which it is provisioned, then the virtual interface will remain in this state until it is confirmed by the virtual interface owner.</p></li>
603    /// <li>
604    /// <p><code>verifying</code>: This state only applies to public virtual interfaces. Each public virtual interface needs validation before the virtual interface can be created.</p></li>
605    /// <li>
606    /// <p><code>pending</code>: A virtual interface is in this state from the time that it is created until the virtual interface is ready to forward traffic.</p></li>
607    /// <li>
608    /// <p><code>available</code>: A virtual interface that is able to forward traffic.</p></li>
609    /// <li>
610    /// <p><code>down</code>: A virtual interface that is BGP down.</p></li>
611    /// <li>
612    /// <p><code>testing</code>: A virtual interface is in this state immediately after calling <code>StartBgpFailoverTest</code> and remains in this state during the duration of the test.</p></li>
613    /// <li>
614    /// <p><code>deleting</code>: A virtual interface is in this state immediately after calling <code>DeleteVirtualInterface</code> until it can no longer forward traffic.</p></li>
615    /// <li>
616    /// <p><code>deleted</code>: A virtual interface that cannot forward traffic.</p></li>
617    /// <li>
618    /// <p><code>rejected</code>: The virtual interface owner has declined creation of the virtual interface. If a virtual interface in the <code>Confirming</code> state is deleted by the virtual interface owner, the virtual interface enters the <code>Rejected</code> state.</p></li>
619    /// <li>
620    /// <p><code>unknown</code>: The state of the virtual interface is not available.</p></li>
621    /// </ul>
622    pub fn get_virtual_interface_state(&self) -> &::std::option::Option<crate::types::VirtualInterfaceState> {
623        &self.virtual_interface_state
624    }
625    /// <p>The customer router configuration.</p>
626    pub fn customer_router_config(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
627        self.customer_router_config = ::std::option::Option::Some(input.into());
628        self
629    }
630    /// <p>The customer router configuration.</p>
631    pub fn set_customer_router_config(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
632        self.customer_router_config = input;
633        self
634    }
635    /// <p>The customer router configuration.</p>
636    pub fn get_customer_router_config(&self) -> &::std::option::Option<::std::string::String> {
637        &self.customer_router_config
638    }
639    /// <p>The maximum transmission unit (MTU), in bytes. The supported values are 1500 and 8500. The default value is 1500</p>
640    pub fn mtu(mut self, input: i32) -> Self {
641        self.mtu = ::std::option::Option::Some(input);
642        self
643    }
644    /// <p>The maximum transmission unit (MTU), in bytes. The supported values are 1500 and 8500. The default value is 1500</p>
645    pub fn set_mtu(mut self, input: ::std::option::Option<i32>) -> Self {
646        self.mtu = input;
647        self
648    }
649    /// <p>The maximum transmission unit (MTU), in bytes. The supported values are 1500 and 8500. The default value is 1500</p>
650    pub fn get_mtu(&self) -> &::std::option::Option<i32> {
651        &self.mtu
652    }
653    /// <p>Indicates whether jumbo frames are supported.</p>
654    pub fn jumbo_frame_capable(mut self, input: bool) -> Self {
655        self.jumbo_frame_capable = ::std::option::Option::Some(input);
656        self
657    }
658    /// <p>Indicates whether jumbo frames are supported.</p>
659    pub fn set_jumbo_frame_capable(mut self, input: ::std::option::Option<bool>) -> Self {
660        self.jumbo_frame_capable = input;
661        self
662    }
663    /// <p>Indicates whether jumbo frames are supported.</p>
664    pub fn get_jumbo_frame_capable(&self) -> &::std::option::Option<bool> {
665        &self.jumbo_frame_capable
666    }
667    /// <p>The ID of the virtual private gateway. Applies only to private virtual interfaces.</p>
668    pub fn virtual_gateway_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
669        self.virtual_gateway_id = ::std::option::Option::Some(input.into());
670        self
671    }
672    /// <p>The ID of the virtual private gateway. Applies only to private virtual interfaces.</p>
673    pub fn set_virtual_gateway_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
674        self.virtual_gateway_id = input;
675        self
676    }
677    /// <p>The ID of the virtual private gateway. Applies only to private virtual interfaces.</p>
678    pub fn get_virtual_gateway_id(&self) -> &::std::option::Option<::std::string::String> {
679        &self.virtual_gateway_id
680    }
681    /// <p>The ID of the Direct Connect gateway.</p>
682    pub fn direct_connect_gateway_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
683        self.direct_connect_gateway_id = ::std::option::Option::Some(input.into());
684        self
685    }
686    /// <p>The ID of the Direct Connect gateway.</p>
687    pub fn set_direct_connect_gateway_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
688        self.direct_connect_gateway_id = input;
689        self
690    }
691    /// <p>The ID of the Direct Connect gateway.</p>
692    pub fn get_direct_connect_gateway_id(&self) -> &::std::option::Option<::std::string::String> {
693        &self.direct_connect_gateway_id
694    }
695    /// Appends an item to `route_filter_prefixes`.
696    ///
697    /// To override the contents of this collection use [`set_route_filter_prefixes`](Self::set_route_filter_prefixes).
698    ///
699    /// <p>The routes to be advertised to the Amazon Web Services network in this Region. Applies to public virtual interfaces.</p>
700    pub fn route_filter_prefixes(mut self, input: crate::types::RouteFilterPrefix) -> Self {
701        let mut v = self.route_filter_prefixes.unwrap_or_default();
702        v.push(input);
703        self.route_filter_prefixes = ::std::option::Option::Some(v);
704        self
705    }
706    /// <p>The routes to be advertised to the Amazon Web Services network in this Region. Applies to public virtual interfaces.</p>
707    pub fn set_route_filter_prefixes(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::RouteFilterPrefix>>) -> Self {
708        self.route_filter_prefixes = input;
709        self
710    }
711    /// <p>The routes to be advertised to the Amazon Web Services network in this Region. Applies to public virtual interfaces.</p>
712    pub fn get_route_filter_prefixes(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::RouteFilterPrefix>> {
713        &self.route_filter_prefixes
714    }
715    /// Appends an item to `bgp_peers`.
716    ///
717    /// To override the contents of this collection use [`set_bgp_peers`](Self::set_bgp_peers).
718    ///
719    /// <p>The BGP peers configured on this virtual interface.</p>
720    pub fn bgp_peers(mut self, input: crate::types::BgpPeer) -> Self {
721        let mut v = self.bgp_peers.unwrap_or_default();
722        v.push(input);
723        self.bgp_peers = ::std::option::Option::Some(v);
724        self
725    }
726    /// <p>The BGP peers configured on this virtual interface.</p>
727    pub fn set_bgp_peers(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::BgpPeer>>) -> Self {
728        self.bgp_peers = input;
729        self
730    }
731    /// <p>The BGP peers configured on this virtual interface.</p>
732    pub fn get_bgp_peers(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::BgpPeer>> {
733        &self.bgp_peers
734    }
735    /// <p>The Amazon Web Services Region where the virtual interface is located.</p>
736    pub fn region(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
737        self.region = ::std::option::Option::Some(input.into());
738        self
739    }
740    /// <p>The Amazon Web Services Region where the virtual interface is located.</p>
741    pub fn set_region(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
742        self.region = input;
743        self
744    }
745    /// <p>The Amazon Web Services Region where the virtual interface is located.</p>
746    pub fn get_region(&self) -> &::std::option::Option<::std::string::String> {
747        &self.region
748    }
749    /// <p>The Direct Connect endpoint that terminates the physical connection.</p>
750    pub fn aws_device_v2(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
751        self.aws_device_v2 = ::std::option::Option::Some(input.into());
752        self
753    }
754    /// <p>The Direct Connect endpoint that terminates the physical connection.</p>
755    pub fn set_aws_device_v2(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
756        self.aws_device_v2 = input;
757        self
758    }
759    /// <p>The Direct Connect endpoint that terminates the physical connection.</p>
760    pub fn get_aws_device_v2(&self) -> &::std::option::Option<::std::string::String> {
761        &self.aws_device_v2
762    }
763    /// <p>The Direct Connect endpoint that terminates the logical connection. This device might be different than the device that terminates the physical connection.</p>
764    pub fn aws_logical_device_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
765        self.aws_logical_device_id = ::std::option::Option::Some(input.into());
766        self
767    }
768    /// <p>The Direct Connect endpoint that terminates the logical connection. This device might be different than the device that terminates the physical connection.</p>
769    pub fn set_aws_logical_device_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
770        self.aws_logical_device_id = input;
771        self
772    }
773    /// <p>The Direct Connect endpoint that terminates the logical connection. This device might be different than the device that terminates the physical connection.</p>
774    pub fn get_aws_logical_device_id(&self) -> &::std::option::Option<::std::string::String> {
775        &self.aws_logical_device_id
776    }
777    /// Appends an item to `tags`.
778    ///
779    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
780    ///
781    /// <p>The tags associated with the virtual interface.</p>
782    pub fn tags(mut self, input: crate::types::Tag) -> Self {
783        let mut v = self.tags.unwrap_or_default();
784        v.push(input);
785        self.tags = ::std::option::Option::Some(v);
786        self
787    }
788    /// <p>The tags associated with the virtual interface.</p>
789    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
790        self.tags = input;
791        self
792    }
793    /// <p>The tags associated with the virtual interface.</p>
794    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
795        &self.tags
796    }
797    /// <p>Indicates whether SiteLink is enabled.</p>
798    pub fn site_link_enabled(mut self, input: bool) -> Self {
799        self.site_link_enabled = ::std::option::Option::Some(input);
800        self
801    }
802    /// <p>Indicates whether SiteLink is enabled.</p>
803    pub fn set_site_link_enabled(mut self, input: ::std::option::Option<bool>) -> Self {
804        self.site_link_enabled = input;
805        self
806    }
807    /// <p>Indicates whether SiteLink is enabled.</p>
808    pub fn get_site_link_enabled(&self) -> &::std::option::Option<bool> {
809        &self.site_link_enabled
810    }
811    pub(crate) fn _request_id(mut self, request_id: impl Into<String>) -> Self {
812        self._request_id = Some(request_id.into());
813        self
814    }
815
816    pub(crate) fn _set_request_id(&mut self, request_id: Option<String>) -> &mut Self {
817        self._request_id = request_id;
818        self
819    }
820    /// Consumes the builder and constructs a [`UpdateVirtualInterfaceAttributesOutput`](crate::operation::update_virtual_interface_attributes::UpdateVirtualInterfaceAttributesOutput).
821    pub fn build(self) -> crate::operation::update_virtual_interface_attributes::UpdateVirtualInterfaceAttributesOutput {
822        crate::operation::update_virtual_interface_attributes::UpdateVirtualInterfaceAttributesOutput {
823            owner_account: self.owner_account,
824            virtual_interface_id: self.virtual_interface_id,
825            location: self.location,
826            connection_id: self.connection_id,
827            virtual_interface_type: self.virtual_interface_type,
828            virtual_interface_name: self.virtual_interface_name,
829            vlan: self.vlan.unwrap_or_default(),
830            asn: self.asn.unwrap_or_default(),
831            asn_long: self.asn_long,
832            amazon_side_asn: self.amazon_side_asn,
833            auth_key: self.auth_key,
834            amazon_address: self.amazon_address,
835            customer_address: self.customer_address,
836            address_family: self.address_family,
837            virtual_interface_state: self.virtual_interface_state,
838            customer_router_config: self.customer_router_config,
839            mtu: self.mtu,
840            jumbo_frame_capable: self.jumbo_frame_capable,
841            virtual_gateway_id: self.virtual_gateway_id,
842            direct_connect_gateway_id: self.direct_connect_gateway_id,
843            route_filter_prefixes: self.route_filter_prefixes,
844            bgp_peers: self.bgp_peers,
845            region: self.region,
846            aws_device_v2: self.aws_device_v2,
847            aws_logical_device_id: self.aws_logical_device_id,
848            tags: self.tags,
849            site_link_enabled: self.site_link_enabled,
850            _request_id: self._request_id,
851        }
852    }
853}