1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/ec2/EC2_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSStreamFwd.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <aws/core/utils/memory/stl/AWSVector.h>
11 #include <aws/ec2/model/Tag.h>
12 #include <utility>
13 
14 namespace Aws
15 {
16 namespace Utils
17 {
18 namespace Xml
19 {
20   class XmlNode;
21 } // namespace Xml
22 } // namespace Utils
23 namespace EC2
24 {
25 namespace Model
26 {
27 
28   /**
29    * <p>Describes a customer gateway.</p><p><h3>See Also:</h3>   <a
30    * href="http://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CustomerGateway">AWS
31    * API Reference</a></p>
32    */
33   class AWS_EC2_API CustomerGateway
34   {
35   public:
36     CustomerGateway();
37     CustomerGateway(const Aws::Utils::Xml::XmlNode& xmlNode);
38     CustomerGateway& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
39 
40     void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const;
41     void OutputToStream(Aws::OStream& oStream, const char* location) const;
42 
43 
44     /**
45      * <p>The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number
46      * (ASN).</p>
47      */
GetBgpAsn()48     inline const Aws::String& GetBgpAsn() const{ return m_bgpAsn; }
49 
50     /**
51      * <p>The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number
52      * (ASN).</p>
53      */
BgpAsnHasBeenSet()54     inline bool BgpAsnHasBeenSet() const { return m_bgpAsnHasBeenSet; }
55 
56     /**
57      * <p>The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number
58      * (ASN).</p>
59      */
SetBgpAsn(const Aws::String & value)60     inline void SetBgpAsn(const Aws::String& value) { m_bgpAsnHasBeenSet = true; m_bgpAsn = value; }
61 
62     /**
63      * <p>The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number
64      * (ASN).</p>
65      */
SetBgpAsn(Aws::String && value)66     inline void SetBgpAsn(Aws::String&& value) { m_bgpAsnHasBeenSet = true; m_bgpAsn = std::move(value); }
67 
68     /**
69      * <p>The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number
70      * (ASN).</p>
71      */
SetBgpAsn(const char * value)72     inline void SetBgpAsn(const char* value) { m_bgpAsnHasBeenSet = true; m_bgpAsn.assign(value); }
73 
74     /**
75      * <p>The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number
76      * (ASN).</p>
77      */
WithBgpAsn(const Aws::String & value)78     inline CustomerGateway& WithBgpAsn(const Aws::String& value) { SetBgpAsn(value); return *this;}
79 
80     /**
81      * <p>The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number
82      * (ASN).</p>
83      */
WithBgpAsn(Aws::String && value)84     inline CustomerGateway& WithBgpAsn(Aws::String&& value) { SetBgpAsn(std::move(value)); return *this;}
85 
86     /**
87      * <p>The customer gateway's Border Gateway Protocol (BGP) Autonomous System Number
88      * (ASN).</p>
89      */
WithBgpAsn(const char * value)90     inline CustomerGateway& WithBgpAsn(const char* value) { SetBgpAsn(value); return *this;}
91 
92 
93     /**
94      * <p>The ID of the customer gateway.</p>
95      */
GetCustomerGatewayId()96     inline const Aws::String& GetCustomerGatewayId() const{ return m_customerGatewayId; }
97 
98     /**
99      * <p>The ID of the customer gateway.</p>
100      */
CustomerGatewayIdHasBeenSet()101     inline bool CustomerGatewayIdHasBeenSet() const { return m_customerGatewayIdHasBeenSet; }
102 
103     /**
104      * <p>The ID of the customer gateway.</p>
105      */
SetCustomerGatewayId(const Aws::String & value)106     inline void SetCustomerGatewayId(const Aws::String& value) { m_customerGatewayIdHasBeenSet = true; m_customerGatewayId = value; }
107 
108     /**
109      * <p>The ID of the customer gateway.</p>
110      */
SetCustomerGatewayId(Aws::String && value)111     inline void SetCustomerGatewayId(Aws::String&& value) { m_customerGatewayIdHasBeenSet = true; m_customerGatewayId = std::move(value); }
112 
113     /**
114      * <p>The ID of the customer gateway.</p>
115      */
SetCustomerGatewayId(const char * value)116     inline void SetCustomerGatewayId(const char* value) { m_customerGatewayIdHasBeenSet = true; m_customerGatewayId.assign(value); }
117 
118     /**
119      * <p>The ID of the customer gateway.</p>
120      */
WithCustomerGatewayId(const Aws::String & value)121     inline CustomerGateway& WithCustomerGatewayId(const Aws::String& value) { SetCustomerGatewayId(value); return *this;}
122 
123     /**
124      * <p>The ID of the customer gateway.</p>
125      */
WithCustomerGatewayId(Aws::String && value)126     inline CustomerGateway& WithCustomerGatewayId(Aws::String&& value) { SetCustomerGatewayId(std::move(value)); return *this;}
127 
128     /**
129      * <p>The ID of the customer gateway.</p>
130      */
WithCustomerGatewayId(const char * value)131     inline CustomerGateway& WithCustomerGatewayId(const char* value) { SetCustomerGatewayId(value); return *this;}
132 
133 
134     /**
135      * <p>The Internet-routable IP address of the customer gateway's outside
136      * interface.</p>
137      */
GetIpAddress()138     inline const Aws::String& GetIpAddress() const{ return m_ipAddress; }
139 
140     /**
141      * <p>The Internet-routable IP address of the customer gateway's outside
142      * interface.</p>
143      */
IpAddressHasBeenSet()144     inline bool IpAddressHasBeenSet() const { return m_ipAddressHasBeenSet; }
145 
146     /**
147      * <p>The Internet-routable IP address of the customer gateway's outside
148      * interface.</p>
149      */
SetIpAddress(const Aws::String & value)150     inline void SetIpAddress(const Aws::String& value) { m_ipAddressHasBeenSet = true; m_ipAddress = value; }
151 
152     /**
153      * <p>The Internet-routable IP address of the customer gateway's outside
154      * interface.</p>
155      */
SetIpAddress(Aws::String && value)156     inline void SetIpAddress(Aws::String&& value) { m_ipAddressHasBeenSet = true; m_ipAddress = std::move(value); }
157 
158     /**
159      * <p>The Internet-routable IP address of the customer gateway's outside
160      * interface.</p>
161      */
SetIpAddress(const char * value)162     inline void SetIpAddress(const char* value) { m_ipAddressHasBeenSet = true; m_ipAddress.assign(value); }
163 
164     /**
165      * <p>The Internet-routable IP address of the customer gateway's outside
166      * interface.</p>
167      */
WithIpAddress(const Aws::String & value)168     inline CustomerGateway& WithIpAddress(const Aws::String& value) { SetIpAddress(value); return *this;}
169 
170     /**
171      * <p>The Internet-routable IP address of the customer gateway's outside
172      * interface.</p>
173      */
WithIpAddress(Aws::String && value)174     inline CustomerGateway& WithIpAddress(Aws::String&& value) { SetIpAddress(std::move(value)); return *this;}
175 
176     /**
177      * <p>The Internet-routable IP address of the customer gateway's outside
178      * interface.</p>
179      */
WithIpAddress(const char * value)180     inline CustomerGateway& WithIpAddress(const char* value) { SetIpAddress(value); return *this;}
181 
182 
183     /**
184      * <p>The Amazon Resource Name (ARN) for the customer gateway certificate.</p>
185      */
GetCertificateArn()186     inline const Aws::String& GetCertificateArn() const{ return m_certificateArn; }
187 
188     /**
189      * <p>The Amazon Resource Name (ARN) for the customer gateway certificate.</p>
190      */
CertificateArnHasBeenSet()191     inline bool CertificateArnHasBeenSet() const { return m_certificateArnHasBeenSet; }
192 
193     /**
194      * <p>The Amazon Resource Name (ARN) for the customer gateway certificate.</p>
195      */
SetCertificateArn(const Aws::String & value)196     inline void SetCertificateArn(const Aws::String& value) { m_certificateArnHasBeenSet = true; m_certificateArn = value; }
197 
198     /**
199      * <p>The Amazon Resource Name (ARN) for the customer gateway certificate.</p>
200      */
SetCertificateArn(Aws::String && value)201     inline void SetCertificateArn(Aws::String&& value) { m_certificateArnHasBeenSet = true; m_certificateArn = std::move(value); }
202 
203     /**
204      * <p>The Amazon Resource Name (ARN) for the customer gateway certificate.</p>
205      */
SetCertificateArn(const char * value)206     inline void SetCertificateArn(const char* value) { m_certificateArnHasBeenSet = true; m_certificateArn.assign(value); }
207 
208     /**
209      * <p>The Amazon Resource Name (ARN) for the customer gateway certificate.</p>
210      */
WithCertificateArn(const Aws::String & value)211     inline CustomerGateway& WithCertificateArn(const Aws::String& value) { SetCertificateArn(value); return *this;}
212 
213     /**
214      * <p>The Amazon Resource Name (ARN) for the customer gateway certificate.</p>
215      */
WithCertificateArn(Aws::String && value)216     inline CustomerGateway& WithCertificateArn(Aws::String&& value) { SetCertificateArn(std::move(value)); return *this;}
217 
218     /**
219      * <p>The Amazon Resource Name (ARN) for the customer gateway certificate.</p>
220      */
WithCertificateArn(const char * value)221     inline CustomerGateway& WithCertificateArn(const char* value) { SetCertificateArn(value); return *this;}
222 
223 
224     /**
225      * <p>The current state of the customer gateway (<code>pending | available |
226      * deleting | deleted</code>).</p>
227      */
GetState()228     inline const Aws::String& GetState() const{ return m_state; }
229 
230     /**
231      * <p>The current state of the customer gateway (<code>pending | available |
232      * deleting | deleted</code>).</p>
233      */
StateHasBeenSet()234     inline bool StateHasBeenSet() const { return m_stateHasBeenSet; }
235 
236     /**
237      * <p>The current state of the customer gateway (<code>pending | available |
238      * deleting | deleted</code>).</p>
239      */
SetState(const Aws::String & value)240     inline void SetState(const Aws::String& value) { m_stateHasBeenSet = true; m_state = value; }
241 
242     /**
243      * <p>The current state of the customer gateway (<code>pending | available |
244      * deleting | deleted</code>).</p>
245      */
SetState(Aws::String && value)246     inline void SetState(Aws::String&& value) { m_stateHasBeenSet = true; m_state = std::move(value); }
247 
248     /**
249      * <p>The current state of the customer gateway (<code>pending | available |
250      * deleting | deleted</code>).</p>
251      */
SetState(const char * value)252     inline void SetState(const char* value) { m_stateHasBeenSet = true; m_state.assign(value); }
253 
254     /**
255      * <p>The current state of the customer gateway (<code>pending | available |
256      * deleting | deleted</code>).</p>
257      */
WithState(const Aws::String & value)258     inline CustomerGateway& WithState(const Aws::String& value) { SetState(value); return *this;}
259 
260     /**
261      * <p>The current state of the customer gateway (<code>pending | available |
262      * deleting | deleted</code>).</p>
263      */
WithState(Aws::String && value)264     inline CustomerGateway& WithState(Aws::String&& value) { SetState(std::move(value)); return *this;}
265 
266     /**
267      * <p>The current state of the customer gateway (<code>pending | available |
268      * deleting | deleted</code>).</p>
269      */
WithState(const char * value)270     inline CustomerGateway& WithState(const char* value) { SetState(value); return *this;}
271 
272 
273     /**
274      * <p>The type of VPN connection the customer gateway supports
275      * (<code>ipsec.1</code>).</p>
276      */
GetType()277     inline const Aws::String& GetType() const{ return m_type; }
278 
279     /**
280      * <p>The type of VPN connection the customer gateway supports
281      * (<code>ipsec.1</code>).</p>
282      */
TypeHasBeenSet()283     inline bool TypeHasBeenSet() const { return m_typeHasBeenSet; }
284 
285     /**
286      * <p>The type of VPN connection the customer gateway supports
287      * (<code>ipsec.1</code>).</p>
288      */
SetType(const Aws::String & value)289     inline void SetType(const Aws::String& value) { m_typeHasBeenSet = true; m_type = value; }
290 
291     /**
292      * <p>The type of VPN connection the customer gateway supports
293      * (<code>ipsec.1</code>).</p>
294      */
SetType(Aws::String && value)295     inline void SetType(Aws::String&& value) { m_typeHasBeenSet = true; m_type = std::move(value); }
296 
297     /**
298      * <p>The type of VPN connection the customer gateway supports
299      * (<code>ipsec.1</code>).</p>
300      */
SetType(const char * value)301     inline void SetType(const char* value) { m_typeHasBeenSet = true; m_type.assign(value); }
302 
303     /**
304      * <p>The type of VPN connection the customer gateway supports
305      * (<code>ipsec.1</code>).</p>
306      */
WithType(const Aws::String & value)307     inline CustomerGateway& WithType(const Aws::String& value) { SetType(value); return *this;}
308 
309     /**
310      * <p>The type of VPN connection the customer gateway supports
311      * (<code>ipsec.1</code>).</p>
312      */
WithType(Aws::String && value)313     inline CustomerGateway& WithType(Aws::String&& value) { SetType(std::move(value)); return *this;}
314 
315     /**
316      * <p>The type of VPN connection the customer gateway supports
317      * (<code>ipsec.1</code>).</p>
318      */
WithType(const char * value)319     inline CustomerGateway& WithType(const char* value) { SetType(value); return *this;}
320 
321 
322     /**
323      * <p>The name of customer gateway device.</p>
324      */
GetDeviceName()325     inline const Aws::String& GetDeviceName() const{ return m_deviceName; }
326 
327     /**
328      * <p>The name of customer gateway device.</p>
329      */
DeviceNameHasBeenSet()330     inline bool DeviceNameHasBeenSet() const { return m_deviceNameHasBeenSet; }
331 
332     /**
333      * <p>The name of customer gateway device.</p>
334      */
SetDeviceName(const Aws::String & value)335     inline void SetDeviceName(const Aws::String& value) { m_deviceNameHasBeenSet = true; m_deviceName = value; }
336 
337     /**
338      * <p>The name of customer gateway device.</p>
339      */
SetDeviceName(Aws::String && value)340     inline void SetDeviceName(Aws::String&& value) { m_deviceNameHasBeenSet = true; m_deviceName = std::move(value); }
341 
342     /**
343      * <p>The name of customer gateway device.</p>
344      */
SetDeviceName(const char * value)345     inline void SetDeviceName(const char* value) { m_deviceNameHasBeenSet = true; m_deviceName.assign(value); }
346 
347     /**
348      * <p>The name of customer gateway device.</p>
349      */
WithDeviceName(const Aws::String & value)350     inline CustomerGateway& WithDeviceName(const Aws::String& value) { SetDeviceName(value); return *this;}
351 
352     /**
353      * <p>The name of customer gateway device.</p>
354      */
WithDeviceName(Aws::String && value)355     inline CustomerGateway& WithDeviceName(Aws::String&& value) { SetDeviceName(std::move(value)); return *this;}
356 
357     /**
358      * <p>The name of customer gateway device.</p>
359      */
WithDeviceName(const char * value)360     inline CustomerGateway& WithDeviceName(const char* value) { SetDeviceName(value); return *this;}
361 
362 
363     /**
364      * <p>Any tags assigned to the customer gateway.</p>
365      */
GetTags()366     inline const Aws::Vector<Tag>& GetTags() const{ return m_tags; }
367 
368     /**
369      * <p>Any tags assigned to the customer gateway.</p>
370      */
TagsHasBeenSet()371     inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; }
372 
373     /**
374      * <p>Any tags assigned to the customer gateway.</p>
375      */
SetTags(const Aws::Vector<Tag> & value)376     inline void SetTags(const Aws::Vector<Tag>& value) { m_tagsHasBeenSet = true; m_tags = value; }
377 
378     /**
379      * <p>Any tags assigned to the customer gateway.</p>
380      */
SetTags(Aws::Vector<Tag> && value)381     inline void SetTags(Aws::Vector<Tag>&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); }
382 
383     /**
384      * <p>Any tags assigned to the customer gateway.</p>
385      */
WithTags(const Aws::Vector<Tag> & value)386     inline CustomerGateway& WithTags(const Aws::Vector<Tag>& value) { SetTags(value); return *this;}
387 
388     /**
389      * <p>Any tags assigned to the customer gateway.</p>
390      */
WithTags(Aws::Vector<Tag> && value)391     inline CustomerGateway& WithTags(Aws::Vector<Tag>&& value) { SetTags(std::move(value)); return *this;}
392 
393     /**
394      * <p>Any tags assigned to the customer gateway.</p>
395      */
AddTags(const Tag & value)396     inline CustomerGateway& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; }
397 
398     /**
399      * <p>Any tags assigned to the customer gateway.</p>
400      */
AddTags(Tag && value)401     inline CustomerGateway& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; }
402 
403   private:
404 
405     Aws::String m_bgpAsn;
406     bool m_bgpAsnHasBeenSet;
407 
408     Aws::String m_customerGatewayId;
409     bool m_customerGatewayIdHasBeenSet;
410 
411     Aws::String m_ipAddress;
412     bool m_ipAddressHasBeenSet;
413 
414     Aws::String m_certificateArn;
415     bool m_certificateArnHasBeenSet;
416 
417     Aws::String m_state;
418     bool m_stateHasBeenSet;
419 
420     Aws::String m_type;
421     bool m_typeHasBeenSet;
422 
423     Aws::String m_deviceName;
424     bool m_deviceNameHasBeenSet;
425 
426     Aws::Vector<Tag> m_tags;
427     bool m_tagsHasBeenSet;
428   };
429 
430 } // namespace Model
431 } // namespace EC2
432 } // namespace Aws
433