alibabacloud-vpc20160428 6.9.4__py3-none-any.whl → 6.9.5__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- alibabacloud_vpc20160428/__init__.py +1 -1
- alibabacloud_vpc20160428/client.py +68 -32
- alibabacloud_vpc20160428/models.py +1201 -161
- {alibabacloud_vpc20160428-6.9.4.dist-info → alibabacloud_vpc20160428-6.9.5.dist-info}/METADATA +2 -2
- alibabacloud_vpc20160428-6.9.5.dist-info/RECORD +8 -0
- alibabacloud_vpc20160428-6.9.4.dist-info/RECORD +0 -8
- {alibabacloud_vpc20160428-6.9.4.dist-info → alibabacloud_vpc20160428-6.9.5.dist-info}/LICENSE +0 -0
- {alibabacloud_vpc20160428-6.9.4.dist-info → alibabacloud_vpc20160428-6.9.5.dist-info}/WHEEL +0 -0
- {alibabacloud_vpc20160428-6.9.4.dist-info → alibabacloud_vpc20160428-6.9.5.dist-info}/top_level.txt +0 -0
|
@@ -12719,7 +12719,19 @@ class CreateNatGatewayRequestAccessMode(TeaModel):
|
|
|
12719
12719
|
mode_value: str = None,
|
|
12720
12720
|
tunnel_type: str = None,
|
|
12721
12721
|
):
|
|
12722
|
+
# Access mode. Valid values:
|
|
12723
|
+
#
|
|
12724
|
+
# - **route**: route mode
|
|
12725
|
+
#
|
|
12726
|
+
# - **tunnel**: tunnel mode
|
|
12727
|
+
#
|
|
12728
|
+
# > If this parameter is specified, you must set **PrivateLinkEnabled** to **true**.
|
|
12722
12729
|
self.mode_value = mode_value
|
|
12730
|
+
# Tunnel mode type:
|
|
12731
|
+
#
|
|
12732
|
+
# - **geneve**: Geneve type
|
|
12733
|
+
#
|
|
12734
|
+
# > This value takes effect if the access mode is the tunnel mode.
|
|
12723
12735
|
self.tunnel_type = tunnel_type
|
|
12724
12736
|
|
|
12725
12737
|
def validate(self):
|
|
@@ -12752,9 +12764,9 @@ class CreateNatGatewayRequestTag(TeaModel):
|
|
|
12752
12764
|
key: str = None,
|
|
12753
12765
|
value: str = None,
|
|
12754
12766
|
):
|
|
12755
|
-
# The tag key. The format of Tag.N.Key when you call the operation. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length
|
|
12767
|
+
# The tag key. The format of Tag.N.Key when you call the operation. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.
|
|
12756
12768
|
self.key = key
|
|
12757
|
-
# The tag value. The format of Tag.N.Value when you call the operation. Valid values of N: 1 to 20. The tag
|
|
12769
|
+
# The tag value. The format of Tag.N.Value when you call the operation. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.
|
|
12758
12770
|
self.value = value
|
|
12759
12771
|
|
|
12760
12772
|
def validate(self):
|
|
@@ -12809,6 +12821,7 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12809
12821
|
v_switch_id: str = None,
|
|
12810
12822
|
vpc_id: str = None,
|
|
12811
12823
|
):
|
|
12824
|
+
# The access mode for reverse access to the VPC NAT gateway.
|
|
12812
12825
|
self.access_mode = access_mode
|
|
12813
12826
|
# Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.
|
|
12814
12827
|
self.auto_pay = auto_pay
|
|
@@ -12826,13 +12839,11 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12826
12839
|
self.duration = duration
|
|
12827
12840
|
# The mode in which the EIP is associated with the NAT gateway. Valid values:
|
|
12828
12841
|
#
|
|
12829
|
-
#
|
|
12842
|
+
# - **MULTI_BINDED**(default): the multi-EIP-to-ENI mode.
|
|
12830
12843
|
#
|
|
12831
|
-
#
|
|
12844
|
+
# - **NAT**: NAT mode, which is compatible with IPv4 addresses.
|
|
12832
12845
|
#
|
|
12833
|
-
#
|
|
12834
|
-
#
|
|
12835
|
-
# **Note** If a NAT gateway is associated with an EIP in NAT mode, the EIP occupies one private IP address in the vSwitch. Make sure that the vSwitch has sufficient private IP addresses. Otherwise, the NAT gateway fails to be associated with the EIP. In NAT mode, a maximum number of 50 EIPs can be associated with each NAT gateway.
|
|
12846
|
+
# > If an EIP is associated with a NAT gateway in NAT mode, the EIP occupies a private IP address of the vSwitch where the NAT gateway is deployed. Make sure that the vSwitch has sufficient private IP addresses. Otherwise, EIPs cannot be associated with the NAT gateway. In NAT mode, a maximum number of 50 EIPs can be associated with each NAT gateway.
|
|
12836
12847
|
self.eip_bind_mode = eip_bind_mode
|
|
12837
12848
|
# Specifies whether to enable ICMP retrieval. Valid values:
|
|
12838
12849
|
#
|
|
@@ -12849,7 +12860,7 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12849
12860
|
self.internet_charge_type = internet_charge_type
|
|
12850
12861
|
# The name of the NAT gateway.
|
|
12851
12862
|
#
|
|
12852
|
-
# The name must be 2 to 128 characters in length
|
|
12863
|
+
# The name must be 2 to 128 characters in length and can contain letters, digits, underscores (_), and hyphens (-). The name must start with a letter.
|
|
12853
12864
|
#
|
|
12854
12865
|
# If this parameter is not set, the system assigns a default name to the NAT gateway.
|
|
12855
12866
|
self.name = name
|
|
@@ -12864,6 +12875,7 @@ class CreateNatGatewayRequest(TeaModel):
|
|
|
12864
12875
|
self.owner_id = owner_id
|
|
12865
12876
|
# Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.
|
|
12866
12877
|
self.pricing_cycle = pricing_cycle
|
|
12878
|
+
# PrivateLink is not supported by default. If you set the value to true, PrivateLink is supported.
|
|
12867
12879
|
self.private_link_enabled = private_link_enabled
|
|
12868
12880
|
# The region ID of the NAT gateway.
|
|
12869
12881
|
#
|
|
@@ -13024,9 +13036,9 @@ class CreateNatGatewayShrinkRequestTag(TeaModel):
|
|
|
13024
13036
|
key: str = None,
|
|
13025
13037
|
value: str = None,
|
|
13026
13038
|
):
|
|
13027
|
-
# The tag key. The format of Tag.N.Key when you call the operation. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length
|
|
13039
|
+
# The tag key. The format of Tag.N.Key when you call the operation. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.
|
|
13028
13040
|
self.key = key
|
|
13029
|
-
# The tag value. The format of Tag.N.Value when you call the operation. Valid values of N: 1 to 20. The tag
|
|
13041
|
+
# The tag value. The format of Tag.N.Value when you call the operation. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.
|
|
13030
13042
|
self.value = value
|
|
13031
13043
|
|
|
13032
13044
|
def validate(self):
|
|
@@ -13081,6 +13093,7 @@ class CreateNatGatewayShrinkRequest(TeaModel):
|
|
|
13081
13093
|
v_switch_id: str = None,
|
|
13082
13094
|
vpc_id: str = None,
|
|
13083
13095
|
):
|
|
13096
|
+
# The access mode for reverse access to the VPC NAT gateway.
|
|
13084
13097
|
self.access_mode_shrink = access_mode_shrink
|
|
13085
13098
|
# Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.
|
|
13086
13099
|
self.auto_pay = auto_pay
|
|
@@ -13098,13 +13111,11 @@ class CreateNatGatewayShrinkRequest(TeaModel):
|
|
|
13098
13111
|
self.duration = duration
|
|
13099
13112
|
# The mode in which the EIP is associated with the NAT gateway. Valid values:
|
|
13100
13113
|
#
|
|
13101
|
-
#
|
|
13114
|
+
# - **MULTI_BINDED**(default): the multi-EIP-to-ENI mode.
|
|
13102
13115
|
#
|
|
13103
|
-
#
|
|
13116
|
+
# - **NAT**: NAT mode, which is compatible with IPv4 addresses.
|
|
13104
13117
|
#
|
|
13105
|
-
#
|
|
13106
|
-
#
|
|
13107
|
-
# **Note** If a NAT gateway is associated with an EIP in NAT mode, the EIP occupies one private IP address in the vSwitch. Make sure that the vSwitch has sufficient private IP addresses. Otherwise, the NAT gateway fails to be associated with the EIP. In NAT mode, a maximum number of 50 EIPs can be associated with each NAT gateway.
|
|
13118
|
+
# > If an EIP is associated with a NAT gateway in NAT mode, the EIP occupies a private IP address of the vSwitch where the NAT gateway is deployed. Make sure that the vSwitch has sufficient private IP addresses. Otherwise, EIPs cannot be associated with the NAT gateway. In NAT mode, a maximum number of 50 EIPs can be associated with each NAT gateway.
|
|
13108
13119
|
self.eip_bind_mode = eip_bind_mode
|
|
13109
13120
|
# Specifies whether to enable ICMP retrieval. Valid values:
|
|
13110
13121
|
#
|
|
@@ -13121,7 +13132,7 @@ class CreateNatGatewayShrinkRequest(TeaModel):
|
|
|
13121
13132
|
self.internet_charge_type = internet_charge_type
|
|
13122
13133
|
# The name of the NAT gateway.
|
|
13123
13134
|
#
|
|
13124
|
-
# The name must be 2 to 128 characters in length
|
|
13135
|
+
# The name must be 2 to 128 characters in length and can contain letters, digits, underscores (_), and hyphens (-). The name must start with a letter.
|
|
13125
13136
|
#
|
|
13126
13137
|
# If this parameter is not set, the system assigns a default name to the NAT gateway.
|
|
13127
13138
|
self.name = name
|
|
@@ -13136,6 +13147,7 @@ class CreateNatGatewayShrinkRequest(TeaModel):
|
|
|
13136
13147
|
self.owner_id = owner_id
|
|
13137
13148
|
# Subscription Internet NAT gateways are no longer available for purchase. Ignore this parameter.
|
|
13138
13149
|
self.pricing_cycle = pricing_cycle
|
|
13150
|
+
# PrivateLink is not supported by default. If you set the value to true, PrivateLink is supported.
|
|
13139
13151
|
self.private_link_enabled = private_link_enabled
|
|
13140
13152
|
# The region ID of the NAT gateway.
|
|
13141
13153
|
#
|
|
@@ -17341,18 +17353,25 @@ class CreateSslVpnServerRequest(TeaModel):
|
|
|
17341
17353
|
# * **true**\
|
|
17342
17354
|
# * **false** (default)
|
|
17343
17355
|
self.compress = compress
|
|
17344
|
-
# Specifies whether to enable two-factor authentication.
|
|
17356
|
+
# Specifies whether to enable two-factor authentication. To enable two-factor authentication, you need to specify `IDaaSInstanceId`, `IDaaSRegionId`, and `IDaaSApplicationId`. Valid values:
|
|
17357
|
+
#
|
|
17358
|
+
# * **true**\
|
|
17359
|
+
# * **false** (default)
|
|
17360
|
+
#
|
|
17361
|
+
# >
|
|
17345
17362
|
#
|
|
17346
|
-
# *
|
|
17347
|
-
# * **false** (default): disables this feature.
|
|
17363
|
+
# * If you use two-factor authentication for the first time, you need to complete [authorization](https://ram.console.aliyun.com/role/authorization?request=%7B%22Services%22%3A%5B%7B%22Service%22%3A%22VPN%22%2C%22Roles%22%3A%5B%7B%22RoleName%22%3A%22AliyunVpnAccessingIdaasRole%22%2C%22TemplateId%22%3A%22IdaasRole%22%7D%5D%7D%5D%2C%22ReturnUrl%22%3A%22https%3A%2F%2Fvpc.console.aliyun.com%2Fsslvpn%2Fcn-shanghai%2Fvpn-servers%22%7D) before you create an SSL server.
|
|
17348
17364
|
#
|
|
17349
|
-
#
|
|
17350
|
-
# > - If two-factor authentication is already enabled for existing SSL servers, you can continue to use two-factor authentication.
|
|
17365
|
+
# * IDaaS EIAM 1.0 instances are no longer available for purchase. If your Alibaba Cloud account has IDaaS EIAM 1.0 instances, IDaaS EIAM 1.0 instances can be associated after two-factor authentication is enabled. If your Alibaba Cloud account does not have IDaaS EIAM 1.0 instances, only IDaaS EIAM 2.0 instances can be associated after two-factor authentication is enabled.
|
|
17351
17366
|
self.enable_multi_factor_auth = enable_multi_factor_auth
|
|
17367
|
+
# The ID of the IDaaS application.
|
|
17368
|
+
#
|
|
17369
|
+
# * If an IDaaS EIAM 2.0 instance is associated, you need to specify an IDaaS application ID.
|
|
17370
|
+
# * If an IDaaS EIAM 1.0 instance is associated, you do not need to specify an IDaaS application ID.
|
|
17352
17371
|
self.idaa_sapplication_id = idaa_sapplication_id
|
|
17353
|
-
# The
|
|
17372
|
+
# The ID of the IDaaS EIAM instance.
|
|
17354
17373
|
self.idaa_sinstance_id = idaa_sinstance_id
|
|
17355
|
-
# The ID of the
|
|
17374
|
+
# The region ID of the IDaaS EIAM instance.
|
|
17356
17375
|
self.idaa_sregion_id = idaa_sregion_id
|
|
17357
17376
|
# The local CIDR block.
|
|
17358
17377
|
#
|
|
@@ -21446,6 +21465,236 @@ class CreateVpnAttachmentRequestTags(TeaModel):
|
|
|
21446
21465
|
return self
|
|
21447
21466
|
|
|
21448
21467
|
|
|
21468
|
+
class CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelBgpConfig(TeaModel):
|
|
21469
|
+
def __init__(
|
|
21470
|
+
self,
|
|
21471
|
+
local_asn: int = None,
|
|
21472
|
+
local_bgp_ip: str = None,
|
|
21473
|
+
tunnel_cidr: str = None,
|
|
21474
|
+
):
|
|
21475
|
+
self.local_asn = local_asn
|
|
21476
|
+
self.local_bgp_ip = local_bgp_ip
|
|
21477
|
+
self.tunnel_cidr = tunnel_cidr
|
|
21478
|
+
|
|
21479
|
+
def validate(self):
|
|
21480
|
+
pass
|
|
21481
|
+
|
|
21482
|
+
def to_map(self):
|
|
21483
|
+
_map = super().to_map()
|
|
21484
|
+
if _map is not None:
|
|
21485
|
+
return _map
|
|
21486
|
+
|
|
21487
|
+
result = dict()
|
|
21488
|
+
if self.local_asn is not None:
|
|
21489
|
+
result['LocalAsn'] = self.local_asn
|
|
21490
|
+
if self.local_bgp_ip is not None:
|
|
21491
|
+
result['LocalBgpIp'] = self.local_bgp_ip
|
|
21492
|
+
if self.tunnel_cidr is not None:
|
|
21493
|
+
result['TunnelCidr'] = self.tunnel_cidr
|
|
21494
|
+
return result
|
|
21495
|
+
|
|
21496
|
+
def from_map(self, m: dict = None):
|
|
21497
|
+
m = m or dict()
|
|
21498
|
+
if m.get('LocalAsn') is not None:
|
|
21499
|
+
self.local_asn = m.get('LocalAsn')
|
|
21500
|
+
if m.get('LocalBgpIp') is not None:
|
|
21501
|
+
self.local_bgp_ip = m.get('LocalBgpIp')
|
|
21502
|
+
if m.get('TunnelCidr') is not None:
|
|
21503
|
+
self.tunnel_cidr = m.get('TunnelCidr')
|
|
21504
|
+
return self
|
|
21505
|
+
|
|
21506
|
+
|
|
21507
|
+
class CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIkeConfig(TeaModel):
|
|
21508
|
+
def __init__(
|
|
21509
|
+
self,
|
|
21510
|
+
ike_auth_alg: str = None,
|
|
21511
|
+
ike_enc_alg: str = None,
|
|
21512
|
+
ike_lifetime: int = None,
|
|
21513
|
+
ike_mode: str = None,
|
|
21514
|
+
ike_pfs: str = None,
|
|
21515
|
+
ike_version: str = None,
|
|
21516
|
+
local_id: str = None,
|
|
21517
|
+
psk: str = None,
|
|
21518
|
+
remote_id: str = None,
|
|
21519
|
+
):
|
|
21520
|
+
self.ike_auth_alg = ike_auth_alg
|
|
21521
|
+
self.ike_enc_alg = ike_enc_alg
|
|
21522
|
+
self.ike_lifetime = ike_lifetime
|
|
21523
|
+
self.ike_mode = ike_mode
|
|
21524
|
+
self.ike_pfs = ike_pfs
|
|
21525
|
+
self.ike_version = ike_version
|
|
21526
|
+
self.local_id = local_id
|
|
21527
|
+
self.psk = psk
|
|
21528
|
+
self.remote_id = remote_id
|
|
21529
|
+
|
|
21530
|
+
def validate(self):
|
|
21531
|
+
pass
|
|
21532
|
+
|
|
21533
|
+
def to_map(self):
|
|
21534
|
+
_map = super().to_map()
|
|
21535
|
+
if _map is not None:
|
|
21536
|
+
return _map
|
|
21537
|
+
|
|
21538
|
+
result = dict()
|
|
21539
|
+
if self.ike_auth_alg is not None:
|
|
21540
|
+
result['IkeAuthAlg'] = self.ike_auth_alg
|
|
21541
|
+
if self.ike_enc_alg is not None:
|
|
21542
|
+
result['IkeEncAlg'] = self.ike_enc_alg
|
|
21543
|
+
if self.ike_lifetime is not None:
|
|
21544
|
+
result['IkeLifetime'] = self.ike_lifetime
|
|
21545
|
+
if self.ike_mode is not None:
|
|
21546
|
+
result['IkeMode'] = self.ike_mode
|
|
21547
|
+
if self.ike_pfs is not None:
|
|
21548
|
+
result['IkePfs'] = self.ike_pfs
|
|
21549
|
+
if self.ike_version is not None:
|
|
21550
|
+
result['IkeVersion'] = self.ike_version
|
|
21551
|
+
if self.local_id is not None:
|
|
21552
|
+
result['LocalId'] = self.local_id
|
|
21553
|
+
if self.psk is not None:
|
|
21554
|
+
result['Psk'] = self.psk
|
|
21555
|
+
if self.remote_id is not None:
|
|
21556
|
+
result['RemoteId'] = self.remote_id
|
|
21557
|
+
return result
|
|
21558
|
+
|
|
21559
|
+
def from_map(self, m: dict = None):
|
|
21560
|
+
m = m or dict()
|
|
21561
|
+
if m.get('IkeAuthAlg') is not None:
|
|
21562
|
+
self.ike_auth_alg = m.get('IkeAuthAlg')
|
|
21563
|
+
if m.get('IkeEncAlg') is not None:
|
|
21564
|
+
self.ike_enc_alg = m.get('IkeEncAlg')
|
|
21565
|
+
if m.get('IkeLifetime') is not None:
|
|
21566
|
+
self.ike_lifetime = m.get('IkeLifetime')
|
|
21567
|
+
if m.get('IkeMode') is not None:
|
|
21568
|
+
self.ike_mode = m.get('IkeMode')
|
|
21569
|
+
if m.get('IkePfs') is not None:
|
|
21570
|
+
self.ike_pfs = m.get('IkePfs')
|
|
21571
|
+
if m.get('IkeVersion') is not None:
|
|
21572
|
+
self.ike_version = m.get('IkeVersion')
|
|
21573
|
+
if m.get('LocalId') is not None:
|
|
21574
|
+
self.local_id = m.get('LocalId')
|
|
21575
|
+
if m.get('Psk') is not None:
|
|
21576
|
+
self.psk = m.get('Psk')
|
|
21577
|
+
if m.get('RemoteId') is not None:
|
|
21578
|
+
self.remote_id = m.get('RemoteId')
|
|
21579
|
+
return self
|
|
21580
|
+
|
|
21581
|
+
|
|
21582
|
+
class CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIpsecConfig(TeaModel):
|
|
21583
|
+
def __init__(
|
|
21584
|
+
self,
|
|
21585
|
+
ipsec_auth_alg: str = None,
|
|
21586
|
+
ipsec_enc_alg: str = None,
|
|
21587
|
+
ipsec_lifetime: int = None,
|
|
21588
|
+
ipsec_pfs: str = None,
|
|
21589
|
+
):
|
|
21590
|
+
self.ipsec_auth_alg = ipsec_auth_alg
|
|
21591
|
+
self.ipsec_enc_alg = ipsec_enc_alg
|
|
21592
|
+
self.ipsec_lifetime = ipsec_lifetime
|
|
21593
|
+
self.ipsec_pfs = ipsec_pfs
|
|
21594
|
+
|
|
21595
|
+
def validate(self):
|
|
21596
|
+
pass
|
|
21597
|
+
|
|
21598
|
+
def to_map(self):
|
|
21599
|
+
_map = super().to_map()
|
|
21600
|
+
if _map is not None:
|
|
21601
|
+
return _map
|
|
21602
|
+
|
|
21603
|
+
result = dict()
|
|
21604
|
+
if self.ipsec_auth_alg is not None:
|
|
21605
|
+
result['IpsecAuthAlg'] = self.ipsec_auth_alg
|
|
21606
|
+
if self.ipsec_enc_alg is not None:
|
|
21607
|
+
result['IpsecEncAlg'] = self.ipsec_enc_alg
|
|
21608
|
+
if self.ipsec_lifetime is not None:
|
|
21609
|
+
result['IpsecLifetime'] = self.ipsec_lifetime
|
|
21610
|
+
if self.ipsec_pfs is not None:
|
|
21611
|
+
result['IpsecPfs'] = self.ipsec_pfs
|
|
21612
|
+
return result
|
|
21613
|
+
|
|
21614
|
+
def from_map(self, m: dict = None):
|
|
21615
|
+
m = m or dict()
|
|
21616
|
+
if m.get('IpsecAuthAlg') is not None:
|
|
21617
|
+
self.ipsec_auth_alg = m.get('IpsecAuthAlg')
|
|
21618
|
+
if m.get('IpsecEncAlg') is not None:
|
|
21619
|
+
self.ipsec_enc_alg = m.get('IpsecEncAlg')
|
|
21620
|
+
if m.get('IpsecLifetime') is not None:
|
|
21621
|
+
self.ipsec_lifetime = m.get('IpsecLifetime')
|
|
21622
|
+
if m.get('IpsecPfs') is not None:
|
|
21623
|
+
self.ipsec_pfs = m.get('IpsecPfs')
|
|
21624
|
+
return self
|
|
21625
|
+
|
|
21626
|
+
|
|
21627
|
+
class CreateVpnAttachmentRequestTunnelOptionsSpecification(TeaModel):
|
|
21628
|
+
def __init__(
|
|
21629
|
+
self,
|
|
21630
|
+
customer_gateway_id: str = None,
|
|
21631
|
+
enable_dpd: bool = None,
|
|
21632
|
+
enable_nat_traversal: bool = None,
|
|
21633
|
+
tunnel_bgp_config: CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelBgpConfig = None,
|
|
21634
|
+
tunnel_ike_config: CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
21635
|
+
tunnel_index: int = None,
|
|
21636
|
+
tunnel_ipsec_config: CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
21637
|
+
):
|
|
21638
|
+
self.customer_gateway_id = customer_gateway_id
|
|
21639
|
+
self.enable_dpd = enable_dpd
|
|
21640
|
+
self.enable_nat_traversal = enable_nat_traversal
|
|
21641
|
+
self.tunnel_bgp_config = tunnel_bgp_config
|
|
21642
|
+
self.tunnel_ike_config = tunnel_ike_config
|
|
21643
|
+
self.tunnel_index = tunnel_index
|
|
21644
|
+
self.tunnel_ipsec_config = tunnel_ipsec_config
|
|
21645
|
+
|
|
21646
|
+
def validate(self):
|
|
21647
|
+
if self.tunnel_bgp_config:
|
|
21648
|
+
self.tunnel_bgp_config.validate()
|
|
21649
|
+
if self.tunnel_ike_config:
|
|
21650
|
+
self.tunnel_ike_config.validate()
|
|
21651
|
+
if self.tunnel_ipsec_config:
|
|
21652
|
+
self.tunnel_ipsec_config.validate()
|
|
21653
|
+
|
|
21654
|
+
def to_map(self):
|
|
21655
|
+
_map = super().to_map()
|
|
21656
|
+
if _map is not None:
|
|
21657
|
+
return _map
|
|
21658
|
+
|
|
21659
|
+
result = dict()
|
|
21660
|
+
if self.customer_gateway_id is not None:
|
|
21661
|
+
result['CustomerGatewayId'] = self.customer_gateway_id
|
|
21662
|
+
if self.enable_dpd is not None:
|
|
21663
|
+
result['EnableDpd'] = self.enable_dpd
|
|
21664
|
+
if self.enable_nat_traversal is not None:
|
|
21665
|
+
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
21666
|
+
if self.tunnel_bgp_config is not None:
|
|
21667
|
+
result['TunnelBgpConfig'] = self.tunnel_bgp_config.to_map()
|
|
21668
|
+
if self.tunnel_ike_config is not None:
|
|
21669
|
+
result['TunnelIkeConfig'] = self.tunnel_ike_config.to_map()
|
|
21670
|
+
if self.tunnel_index is not None:
|
|
21671
|
+
result['TunnelIndex'] = self.tunnel_index
|
|
21672
|
+
if self.tunnel_ipsec_config is not None:
|
|
21673
|
+
result['TunnelIpsecConfig'] = self.tunnel_ipsec_config.to_map()
|
|
21674
|
+
return result
|
|
21675
|
+
|
|
21676
|
+
def from_map(self, m: dict = None):
|
|
21677
|
+
m = m or dict()
|
|
21678
|
+
if m.get('CustomerGatewayId') is not None:
|
|
21679
|
+
self.customer_gateway_id = m.get('CustomerGatewayId')
|
|
21680
|
+
if m.get('EnableDpd') is not None:
|
|
21681
|
+
self.enable_dpd = m.get('EnableDpd')
|
|
21682
|
+
if m.get('EnableNatTraversal') is not None:
|
|
21683
|
+
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
21684
|
+
if m.get('TunnelBgpConfig') is not None:
|
|
21685
|
+
temp_model = CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelBgpConfig()
|
|
21686
|
+
self.tunnel_bgp_config = temp_model.from_map(m['TunnelBgpConfig'])
|
|
21687
|
+
if m.get('TunnelIkeConfig') is not None:
|
|
21688
|
+
temp_model = CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIkeConfig()
|
|
21689
|
+
self.tunnel_ike_config = temp_model.from_map(m['TunnelIkeConfig'])
|
|
21690
|
+
if m.get('TunnelIndex') is not None:
|
|
21691
|
+
self.tunnel_index = m.get('TunnelIndex')
|
|
21692
|
+
if m.get('TunnelIpsecConfig') is not None:
|
|
21693
|
+
temp_model = CreateVpnAttachmentRequestTunnelOptionsSpecificationTunnelIpsecConfig()
|
|
21694
|
+
self.tunnel_ipsec_config = temp_model.from_map(m['TunnelIpsecConfig'])
|
|
21695
|
+
return self
|
|
21696
|
+
|
|
21697
|
+
|
|
21449
21698
|
class CreateVpnAttachmentRequest(TeaModel):
|
|
21450
21699
|
def __init__(
|
|
21451
21700
|
self,
|
|
@@ -21456,6 +21705,7 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21456
21705
|
effect_immediately: bool = None,
|
|
21457
21706
|
enable_dpd: bool = None,
|
|
21458
21707
|
enable_nat_traversal: bool = None,
|
|
21708
|
+
enable_tunnels_bgp: bool = None,
|
|
21459
21709
|
health_check_config: str = None,
|
|
21460
21710
|
ike_config: str = None,
|
|
21461
21711
|
ipsec_config: str = None,
|
|
@@ -21470,6 +21720,7 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21470
21720
|
resource_owner_account: str = None,
|
|
21471
21721
|
resource_owner_id: int = None,
|
|
21472
21722
|
tags: List[CreateVpnAttachmentRequestTags] = None,
|
|
21723
|
+
tunnel_options_specification: List[CreateVpnAttachmentRequestTunnelOptionsSpecification] = None,
|
|
21473
21724
|
):
|
|
21474
21725
|
# Specifies whether to automatically configure routes. Valid values:
|
|
21475
21726
|
#
|
|
@@ -21499,9 +21750,7 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21499
21750
|
#
|
|
21500
21751
|
# > If you do not specify this parameter, the system automatically uses the **request ID** as the **client token**. The **request ID** may be different for each request.
|
|
21501
21752
|
self.client_token = client_token
|
|
21502
|
-
# The
|
|
21503
|
-
#
|
|
21504
|
-
# This parameter is required.
|
|
21753
|
+
# The customer gateway ID.
|
|
21505
21754
|
self.customer_gateway_id = customer_gateway_id
|
|
21506
21755
|
# Specifies whether to immediately start IPsec negotiations after the configuration takes effect. Valid values:
|
|
21507
21756
|
#
|
|
@@ -21518,6 +21767,7 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21518
21767
|
# * **true** (default) After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the VPN tunnel.
|
|
21519
21768
|
# * **false**\
|
|
21520
21769
|
self.enable_nat_traversal = enable_nat_traversal
|
|
21770
|
+
self.enable_tunnels_bgp = enable_tunnels_bgp
|
|
21521
21771
|
# The health check configuration:
|
|
21522
21772
|
#
|
|
21523
21773
|
# * **HealthCheckConfig.enable**: specifies whether to enable health checks. Valid values: **true** and **false**. Default value: false.
|
|
@@ -21537,14 +21787,14 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21537
21787
|
self.health_check_config = health_check_config
|
|
21538
21788
|
# The configurations of Phase 1 negotiations:
|
|
21539
21789
|
#
|
|
21540
|
-
# * **IkeConfig.Psk**:
|
|
21790
|
+
# * **IkeConfig.Psk**: the pre-shared key that is used for identity authentication between the VPN gateway and the on-premises data center.
|
|
21541
21791
|
#
|
|
21542
|
-
# *
|
|
21543
|
-
# * If you do not specify a pre-shared key, the system generates a
|
|
21792
|
+
# * The key must be 1 to 100 characters in length and can contain digits, letters, and the following special characters: ``~!`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
21793
|
+
# * If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnConnection](https://help.aliyun.com/document_detail/2526951.html) operation to query the pre-shared key that is automatically generated by the system.
|
|
21544
21794
|
#
|
|
21545
|
-
# > The pre-shared key of the IPsec-VPN connection must be the same as the authentication key of the data center. Otherwise,
|
|
21795
|
+
# > The pre-shared key of the IPsec-VPN connection must be the same as the authentication key of the on-premises data center. Otherwise, connections between the on-premises data center and the VPN gateway cannot be established.
|
|
21546
21796
|
#
|
|
21547
|
-
# * **IkeConfig.IkeVersion**: the IKE
|
|
21797
|
+
# * **IkeConfig.IkeVersion**: the version of the Internet Key Exchange (IKE) protocol. Valid values: **ikev1** and **ikev2**. Default value: **ikev1**.
|
|
21548
21798
|
#
|
|
21549
21799
|
# * **IkeConfig.IkeMode**: the negotiation mode. Valid values: **main** and **aggressive**. Default value: **main**.
|
|
21550
21800
|
#
|
|
@@ -21554,9 +21804,9 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21554
21804
|
#
|
|
21555
21805
|
# * **IkeConfig.IkePfs**: the Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**. Default value: **group2**.
|
|
21556
21806
|
#
|
|
21557
|
-
# * **IkeConfig.IkeLifetime**: the SA lifetime
|
|
21807
|
+
# * **IkeConfig.IkeLifetime**: the SA lifetime as a result of Phase 1 negotiations. Unit: seconds. Valid values: **0** to **86400**. Default value: **86400**.
|
|
21558
21808
|
#
|
|
21559
|
-
# * **IkeConfig.
|
|
21809
|
+
# * **IkeConfig.LocalIdIPsec**: the identifier on the Alibaba Cloud side. The identifier cannot exceed 100 characters in length. This parameter is left empty by default.
|
|
21560
21810
|
#
|
|
21561
21811
|
# * **IkeConfig.RemoteId**: the identifier on the data center side. The identifier cannot exceed 100 characters in length. The default value is the IP address of the customer gateway.
|
|
21562
21812
|
self.ike_config = ike_config
|
|
@@ -21620,12 +21870,17 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21620
21870
|
#
|
|
21621
21871
|
# Each tag key corresponds to one tag value. You can specify up to 20 tag values in each call.
|
|
21622
21872
|
self.tags = tags
|
|
21873
|
+
self.tunnel_options_specification = tunnel_options_specification
|
|
21623
21874
|
|
|
21624
21875
|
def validate(self):
|
|
21625
21876
|
if self.tags:
|
|
21626
21877
|
for k in self.tags:
|
|
21627
21878
|
if k:
|
|
21628
21879
|
k.validate()
|
|
21880
|
+
if self.tunnel_options_specification:
|
|
21881
|
+
for k in self.tunnel_options_specification:
|
|
21882
|
+
if k:
|
|
21883
|
+
k.validate()
|
|
21629
21884
|
|
|
21630
21885
|
def to_map(self):
|
|
21631
21886
|
_map = super().to_map()
|
|
@@ -21647,6 +21902,8 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21647
21902
|
result['EnableDpd'] = self.enable_dpd
|
|
21648
21903
|
if self.enable_nat_traversal is not None:
|
|
21649
21904
|
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
21905
|
+
if self.enable_tunnels_bgp is not None:
|
|
21906
|
+
result['EnableTunnelsBgp'] = self.enable_tunnels_bgp
|
|
21650
21907
|
if self.health_check_config is not None:
|
|
21651
21908
|
result['HealthCheckConfig'] = self.health_check_config
|
|
21652
21909
|
if self.ike_config is not None:
|
|
@@ -21677,6 +21934,10 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21677
21934
|
if self.tags is not None:
|
|
21678
21935
|
for k in self.tags:
|
|
21679
21936
|
result['Tags'].append(k.to_map() if k else None)
|
|
21937
|
+
result['TunnelOptionsSpecification'] = []
|
|
21938
|
+
if self.tunnel_options_specification is not None:
|
|
21939
|
+
for k in self.tunnel_options_specification:
|
|
21940
|
+
result['TunnelOptionsSpecification'].append(k.to_map() if k else None)
|
|
21680
21941
|
return result
|
|
21681
21942
|
|
|
21682
21943
|
def from_map(self, m: dict = None):
|
|
@@ -21695,6 +21956,8 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21695
21956
|
self.enable_dpd = m.get('EnableDpd')
|
|
21696
21957
|
if m.get('EnableNatTraversal') is not None:
|
|
21697
21958
|
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
21959
|
+
if m.get('EnableTunnelsBgp') is not None:
|
|
21960
|
+
self.enable_tunnels_bgp = m.get('EnableTunnelsBgp')
|
|
21698
21961
|
if m.get('HealthCheckConfig') is not None:
|
|
21699
21962
|
self.health_check_config = m.get('HealthCheckConfig')
|
|
21700
21963
|
if m.get('IkeConfig') is not None:
|
|
@@ -21726,6 +21989,11 @@ class CreateVpnAttachmentRequest(TeaModel):
|
|
|
21726
21989
|
for k in m.get('Tags'):
|
|
21727
21990
|
temp_model = CreateVpnAttachmentRequestTags()
|
|
21728
21991
|
self.tags.append(temp_model.from_map(k))
|
|
21992
|
+
self.tunnel_options_specification = []
|
|
21993
|
+
if m.get('TunnelOptionsSpecification') is not None:
|
|
21994
|
+
for k in m.get('TunnelOptionsSpecification'):
|
|
21995
|
+
temp_model = CreateVpnAttachmentRequestTunnelOptionsSpecification()
|
|
21996
|
+
self.tunnel_options_specification.append(temp_model.from_map(k))
|
|
21729
21997
|
return self
|
|
21730
21998
|
|
|
21731
21999
|
|
|
@@ -21895,17 +22163,19 @@ class CreateVpnConnectionRequestTunnelOptionsSpecificationTunnelBgpConfig(TeaMod
|
|
|
21895
22163
|
local_bgp_ip: str = None,
|
|
21896
22164
|
tunnel_cidr: str = None,
|
|
21897
22165
|
):
|
|
21898
|
-
# The ASN on the Alibaba Cloud side. Valid values: **1** to **4294967295**. Default value: **45104**.
|
|
22166
|
+
# The autonomous system number (ASN) of the tunnel on the Alibaba Cloud side. Valid values: **1** to **4294967295**. Default value: **45104**.
|
|
21899
22167
|
#
|
|
21900
|
-
#
|
|
21901
|
-
#
|
|
21902
|
-
#
|
|
22168
|
+
#
|
|
22169
|
+
#
|
|
22170
|
+
# > - If you set **EnableTunnelsBgp** to **true**, you must set this parameter.
|
|
22171
|
+
# > - Before you add BGP configurations, we recommend that you learn about how BGP dynamic routing works and the limits. For more information, see [VPN Gateway supports BGP dynamic routing](https://help.aliyun.com/document_detail/170235.html).
|
|
22172
|
+
# > - We recommend that you use a private ASN to establish BGP connections to Alibaba Cloud. For information about the range of private ASNs, see the relevant documentation.
|
|
21903
22173
|
self.local_asn = local_asn
|
|
21904
|
-
# The BGP address on the Alibaba Cloud side. The address is an IP address that falls within the BGP CIDR block
|
|
22174
|
+
# The BGP IP address of the tunnel on the Alibaba Cloud side. The address is an IP address that falls within the BGP CIDR block.
|
|
21905
22175
|
self.local_bgp_ip = local_bgp_ip
|
|
21906
|
-
# The BGP CIDR block of the tunnel. The CIDR block must
|
|
22176
|
+
# The BGP CIDR block of the tunnel. The CIDR block must fall within the 169.254.0.0/16 range. The subnet mask of the CIDR block must be 30 bits in length.
|
|
21907
22177
|
#
|
|
21908
|
-
# > The BGP CIDR block of
|
|
22178
|
+
# > The BGP CIDR block of each tunnel must be unique on a VPN gateway.
|
|
21909
22179
|
self.tunnel_cidr = tunnel_cidr
|
|
21910
22180
|
|
|
21911
22181
|
def validate(self):
|
|
@@ -21957,36 +22227,36 @@ class CreateVpnConnectionRequestTunnelOptionsSpecificationTunnelIkeConfig(TeaMod
|
|
|
21957
22227
|
#
|
|
21958
22228
|
# Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.
|
|
21959
22229
|
self.ike_enc_alg = ike_enc_alg
|
|
21960
|
-
# The SA lifetime
|
|
22230
|
+
# The SA lifetime as a result of Phase 1 negotiations. Unit: seconds.
|
|
21961
22231
|
#
|
|
21962
22232
|
# Valid values: **0** to **86400**. Default value: **86400**.
|
|
21963
22233
|
self.ike_lifetime = ike_lifetime
|
|
21964
22234
|
# The negotiation mode of IKE. Valid values: **main** and **aggressive**. Default value: **main**.
|
|
21965
22235
|
#
|
|
21966
|
-
# * **main
|
|
21967
|
-
# * **aggressive**: This mode
|
|
22236
|
+
# * **main:** This mode offers higher security during negotiations.
|
|
22237
|
+
# * **aggressive**: This mode supports faster negotiations and a higher success rate.
|
|
21968
22238
|
self.ike_mode = ike_mode
|
|
21969
|
-
# The
|
|
22239
|
+
# The Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Default value: **group2**.\\
|
|
21970
22240
|
# Valid values: **group1**, **group2**, **group5**, and **group14**.
|
|
21971
22241
|
self.ike_pfs = ike_pfs
|
|
21972
22242
|
# The version of the IKE protocol. Valid values: **ikev1** and **ikev2**. Default value: **ikev1**.
|
|
21973
22243
|
#
|
|
21974
|
-
# Compared with IKEv1, IKEv2 simplifies the SA negotiation process and
|
|
22244
|
+
# Compared with IKEv1, IKEv2 simplifies the SA negotiation process and provides better support for scenarios with multiple CIDR blocks.
|
|
21975
22245
|
self.ike_version = ike_version
|
|
21976
|
-
# The identifier on the Alibaba Cloud side, which is used in Phase 1 negotiations.
|
|
22246
|
+
# The identifier of the tunnel on the Alibaba Cloud side, which is used in Phase 1 negotiations. It can contain at most 100 characters. The default value is the IP address of the tunnel.
|
|
21977
22247
|
#
|
|
21978
|
-
#
|
|
22248
|
+
# **LocalId** supports fully qualified domain names (FQDNs). If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.
|
|
21979
22249
|
self.local_id = local_id
|
|
21980
|
-
# The pre-shared key
|
|
22250
|
+
# The pre-shared key that is used for identity authentication between the tunnel and the tunnel peer.
|
|
21981
22251
|
#
|
|
21982
|
-
# * The key must be 1 to 100 characters in length and can contain digits, letters, and the following characters: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
21983
|
-
# * If you do not specify a pre-shared key, the system generates a
|
|
22252
|
+
# * The key must be 1 to 100 characters in length and can contain digits, letters, and the following special characters: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
22253
|
+
# * If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnConnection](https://help.aliyun.com/document_detail/2526951.html) operation to query the pre-shared key that is automatically generated by the system.
|
|
21984
22254
|
#
|
|
21985
22255
|
# > The tunnel and the tunnel peer must use the same pre-shared key. Otherwise, the tunnel cannot be established.
|
|
21986
22256
|
self.psk = psk
|
|
21987
|
-
# The identifier of the tunnel peer, which is used in Phase 1 negotiations.
|
|
22257
|
+
# The identifier of the tunnel peer, which is used in Phase 1 negotiations. It can contain at most 100 characters. The default value is the IP address of the customer gateway that is associated with the tunnel.
|
|
21988
22258
|
#
|
|
21989
|
-
#
|
|
22259
|
+
# **RemoteId** supports FQDNs. If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.
|
|
21990
22260
|
self.remote_id = remote_id
|
|
21991
22261
|
|
|
21992
22262
|
def validate(self):
|
|
@@ -22057,11 +22327,11 @@ class CreateVpnConnectionRequestTunnelOptionsSpecificationTunnelIpsecConfig(TeaM
|
|
|
22057
22327
|
#
|
|
22058
22328
|
# Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**. Default value: **aes**.
|
|
22059
22329
|
self.ipsec_enc_alg = ipsec_enc_alg
|
|
22060
|
-
# The SA lifetime
|
|
22330
|
+
# The SA lifetime as a result of Phase 2 negotiations. Unit: seconds.
|
|
22061
22331
|
#
|
|
22062
22332
|
# Valid values: **0** to **86400**. Default value: **86400**.
|
|
22063
22333
|
self.ipsec_lifetime = ipsec_lifetime
|
|
22064
|
-
# The
|
|
22334
|
+
# The Diffie-Hellman key exchange algorithm that is used in Phase 2 negotiations. Default value: **group2**.
|
|
22065
22335
|
#
|
|
22066
22336
|
# Valid values: **disabled**, **group1**, **group2**, **group5**, and **group14**.
|
|
22067
22337
|
self.ipsec_pfs = ipsec_pfs
|
|
@@ -22110,33 +22380,33 @@ class CreateVpnConnectionRequestTunnelOptionsSpecification(TeaModel):
|
|
|
22110
22380
|
tunnel_ike_config: CreateVpnConnectionRequestTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
22111
22381
|
tunnel_ipsec_config: CreateVpnConnectionRequestTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
22112
22382
|
):
|
|
22113
|
-
# The ID of the customer gateway associated with the tunnel.
|
|
22383
|
+
# The ID of the customer gateway that is associated with the tunnel.
|
|
22114
22384
|
#
|
|
22115
|
-
# >
|
|
22116
|
-
#
|
|
22117
|
-
#
|
|
22385
|
+
# > - This parameter is required when you create an IPsec-VPN connection in dual-tunnel mode.
|
|
22386
|
+
# > - You can specify parameters in the **TunnelOptionsSpecification** array when you create an IPsec-VPN connection in dual tunnel mode.
|
|
22387
|
+
# > - When you create an IPsec-VPN connection in dual tunnel mode, you must add configurations of the active and standby tunnels for the IPsec-VPN connection. Each IPsec-VPN connection supports only one active tunnel and one standby tunnel.
|
|
22118
22388
|
self.customer_gateway_id = customer_gateway_id
|
|
22119
|
-
# Specifies whether to enable DPD for the tunnel. Valid values:
|
|
22389
|
+
# Specifies whether to enable the Dead Peer Detection (DPD) feature for the tunnel. Valid values:
|
|
22120
22390
|
#
|
|
22121
|
-
# * **true** (default) The initiator of the IPsec-VPN connection sends DPD packets to
|
|
22122
|
-
# * **false
|
|
22391
|
+
# * **true** (default): enables DPD. The initiator of the IPsec-VPN connection sends DPD packets to check the existence and availability of the peer. If no feedback is received from the peer within the specified period of time, the connection fails. In this case, ISAKMP SA and IPsec SA are deleted. The security tunnel is also deleted.
|
|
22392
|
+
# * **false**: disables DPD. The initiator of the IPsec-VPN connection does not send DPD packets.
|
|
22123
22393
|
self.enable_dpd = enable_dpd
|
|
22124
22394
|
# Specifies whether to enable NAT traversal for the tunnel. Valid values:
|
|
22125
22395
|
#
|
|
22126
|
-
# * **true** (default) After NAT traversal is enabled, the
|
|
22127
|
-
# * **false
|
|
22396
|
+
# * **true** (default): enables NAT traversal. After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the IPsec-VPN tunnel.
|
|
22397
|
+
# * **false**: disables NAT traversal.
|
|
22128
22398
|
self.enable_nat_traversal = enable_nat_traversal
|
|
22129
|
-
#
|
|
22399
|
+
# If the VPN gateway uses an SM certificate, you need to configure the CA certificate used by the IPsec peer.
|
|
22130
22400
|
#
|
|
22131
|
-
# * If
|
|
22132
|
-
# * If
|
|
22401
|
+
# * If the VPN gateway uses an SM certificate, this parameter is required.
|
|
22402
|
+
# * If the VPN gateway does not use an SM certificate, leave this parameter empty.
|
|
22133
22403
|
self.remote_ca_certificate = remote_ca_certificate
|
|
22134
|
-
# The role of the tunnel. Valid values:
|
|
22404
|
+
# The role of the tunnel. Valid values: Valid values:
|
|
22135
22405
|
#
|
|
22136
|
-
# * **master**: The tunnel is
|
|
22137
|
-
# * **slave**: The tunnel is
|
|
22406
|
+
# * **master**: The tunnel is an active tunnel.
|
|
22407
|
+
# * **slave**: The tunnel is a standby tunnel.
|
|
22138
22408
|
self.role = role
|
|
22139
|
-
# The BGP configurations
|
|
22409
|
+
# The Border Gateway Protocol (BGP) configurations of the tunnel.
|
|
22140
22410
|
self.tunnel_bgp_config = tunnel_bgp_config
|
|
22141
22411
|
# The configurations of Phase 1 negotiations.
|
|
22142
22412
|
self.tunnel_ike_config = tunnel_ike_config
|
|
@@ -22295,26 +22565,28 @@ class CreateVpnConnectionRequest(TeaModel):
|
|
|
22295
22565
|
# * **HealthCheckConfig.interval**: the time interval of health check retries. Unit: seconds. Default value: **3**.
|
|
22296
22566
|
# * **HealthCheckConfig.retry**: the maximum number of health check retries. Default value: **3**.
|
|
22297
22567
|
self.health_check_config = health_check_config
|
|
22298
|
-
# This parameter is
|
|
22568
|
+
# This parameter is supported if you create an IPsec-VPN connection in single-tunnel mode.
|
|
22299
22569
|
#
|
|
22300
22570
|
# The configurations of Phase 1 negotiations:
|
|
22301
22571
|
#
|
|
22302
|
-
# * **IkeConfig.Psk**:
|
|
22572
|
+
# * **IkeConfig.Psk**: the pre-shared key that is used for identity authentication between the VPN gateway and the on-premises data center.
|
|
22303
22573
|
#
|
|
22304
|
-
# * The key must be 1 to 100 characters in length and can contain digits, letters, and the following characters: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
22574
|
+
# * The key must be 1 to 100 characters in length and can contain digits, letters, and the following special characters: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
22305
22575
|
#
|
|
22306
|
-
# * If you do not specify a pre-shared key, the system generates a
|
|
22576
|
+
# * If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnConnection](https://help.aliyun.com/document_detail/2526951.html) operation to query the pre-shared key that is automatically generated by the system.
|
|
22307
22577
|
#
|
|
22308
|
-
#
|
|
22578
|
+
# **\
|
|
22579
|
+
#
|
|
22580
|
+
# **Note** The pre-shared key of the IPsec-VPN connection must be the same as the authentication key of the on-premises data center. Otherwise, connections between the on-premises data center and the VPN gateway cannot be established.
|
|
22309
22581
|
#
|
|
22310
22582
|
# * **IkeConfig.IkeVersion**: the version of the Internet Key Exchange (IKE) protocol. Valid values: **ikev1** and **ikev2**. Default value: **ikev1**.
|
|
22311
22583
|
#
|
|
22312
|
-
# Compared with IKEv1, IKEv2 simplifies the security association (SA) negotiation process and
|
|
22584
|
+
# Compared with IKEv1, IKEv2 simplifies the security association (SA) negotiation process and provides better support for scenarios with multiple CIDR blocks.
|
|
22313
22585
|
#
|
|
22314
22586
|
# * **IkeConfig.IkeMode**: the negotiation mode of IKE. Valid values: **main** and **aggressive**. Default value: **main**.
|
|
22315
22587
|
#
|
|
22316
22588
|
# * **main:** This mode offers higher security during negotiations.
|
|
22317
|
-
# * **aggressive
|
|
22589
|
+
# * **aggressive**: This mode supports faster negotiations and a higher success rate.
|
|
22318
22590
|
#
|
|
22319
22591
|
# * **IkeConfig.IkeEncAlg**: the encryption algorithm that is used in Phase 1 negotiations.
|
|
22320
22592
|
#
|
|
@@ -22324,13 +22596,13 @@ class CreateVpnConnectionRequest(TeaModel):
|
|
|
22324
22596
|
#
|
|
22325
22597
|
# Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**. Default value: **md5**.
|
|
22326
22598
|
#
|
|
22327
|
-
# * **IkeConfig.IkePfs**: the Diffie-Hellman
|
|
22599
|
+
# * **IkeConfig.IkePfs**: the Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**. Default value: **group2**.
|
|
22328
22600
|
#
|
|
22329
|
-
# * **IkeConfig.IkeLifetime**: the SA lifetime
|
|
22601
|
+
# * **IkeConfig.IkeLifetime**: the SA lifetime as a result of Phase 1 negotiations. Unit: seconds. Valid values: **0** to **86400**. Default value: **86400**.
|
|
22330
22602
|
#
|
|
22331
|
-
# * **IkeConfig.LocalId**: the identifier of the VPN gateway.
|
|
22603
|
+
# * **IkeConfig.LocalId**: the identifier of the VPN gateway. It can contain at most 100 characters. The default value is the IP address of the VPN gateway.
|
|
22332
22604
|
#
|
|
22333
|
-
# * **IkeConfig.RemoteId**: the identifier of the customer gateway.
|
|
22605
|
+
# * **IkeConfig.RemoteId**: the identifier of the customer gateway. It can contain at most 100 characters. The default value is the IP address of the customer gateway.
|
|
22334
22606
|
self.ike_config = ike_config
|
|
22335
22607
|
# This parameter is available if you create an IPsec-VPN connection in single-tunnel mode.
|
|
22336
22608
|
#
|
|
@@ -22397,8 +22669,8 @@ class CreateVpnConnectionRequest(TeaModel):
|
|
|
22397
22669
|
self.tags = tags
|
|
22398
22670
|
# The tunnel configurations.
|
|
22399
22671
|
#
|
|
22400
|
-
# * You can specify
|
|
22401
|
-
# *
|
|
22672
|
+
# * You can specify parameters in the **TunnelOptionsSpecification** array when you create an IPsec-VPN connection in dual tunnel mode.
|
|
22673
|
+
# * When you create an IPsec-VPN connection in dual tunnel mode, you must add configurations of the active and standby tunnels for the IPsec-VPN connection. Each IPsec-VPN connection supports only one active tunnel and one standby tunnel.
|
|
22402
22674
|
self.tunnel_options_specification = tunnel_options_specification
|
|
22403
22675
|
# The ID of the VPN gateway.
|
|
22404
22676
|
#
|
|
@@ -56989,6 +57261,7 @@ class DescribeVcoRouteEntriesResponseBodyVcoRouteEntries(TeaModel):
|
|
|
56989
57261
|
community: str = None,
|
|
56990
57262
|
create_time: int = None,
|
|
56991
57263
|
next_hop: str = None,
|
|
57264
|
+
next_hop_tunnel_id_list: List[str] = None,
|
|
56992
57265
|
route_dest: str = None,
|
|
56993
57266
|
route_entry_type: str = None,
|
|
56994
57267
|
source: str = None,
|
|
@@ -57006,6 +57279,7 @@ class DescribeVcoRouteEntriesResponseBodyVcoRouteEntries(TeaModel):
|
|
|
57006
57279
|
self.create_time = create_time
|
|
57007
57280
|
# The next hop of the route.
|
|
57008
57281
|
self.next_hop = next_hop
|
|
57282
|
+
self.next_hop_tunnel_id_list = next_hop_tunnel_id_list
|
|
57009
57283
|
# The destination CIDR block of the route.
|
|
57010
57284
|
self.route_dest = route_dest
|
|
57011
57285
|
# The route type. Valid values:
|
|
@@ -57048,6 +57322,8 @@ class DescribeVcoRouteEntriesResponseBodyVcoRouteEntries(TeaModel):
|
|
|
57048
57322
|
result['CreateTime'] = self.create_time
|
|
57049
57323
|
if self.next_hop is not None:
|
|
57050
57324
|
result['NextHop'] = self.next_hop
|
|
57325
|
+
if self.next_hop_tunnel_id_list is not None:
|
|
57326
|
+
result['NextHopTunnelIdList'] = self.next_hop_tunnel_id_list
|
|
57051
57327
|
if self.route_dest is not None:
|
|
57052
57328
|
result['RouteDest'] = self.route_dest
|
|
57053
57329
|
if self.route_entry_type is not None:
|
|
@@ -57072,6 +57348,8 @@ class DescribeVcoRouteEntriesResponseBodyVcoRouteEntries(TeaModel):
|
|
|
57072
57348
|
self.create_time = m.get('CreateTime')
|
|
57073
57349
|
if m.get('NextHop') is not None:
|
|
57074
57350
|
self.next_hop = m.get('NextHop')
|
|
57351
|
+
if m.get('NextHopTunnelIdList') is not None:
|
|
57352
|
+
self.next_hop_tunnel_id_list = m.get('NextHopTunnelIdList')
|
|
57075
57353
|
if m.get('RouteDest') is not None:
|
|
57076
57354
|
self.route_dest = m.get('RouteDest')
|
|
57077
57355
|
if m.get('RouteEntryType') is not None:
|
|
@@ -57087,6 +57365,45 @@ class DescribeVcoRouteEntriesResponseBodyVcoRouteEntries(TeaModel):
|
|
|
57087
57365
|
return self
|
|
57088
57366
|
|
|
57089
57367
|
|
|
57368
|
+
class DescribeVcoRouteEntriesResponseBodyVpnRouteCounts(TeaModel):
|
|
57369
|
+
def __init__(
|
|
57370
|
+
self,
|
|
57371
|
+
route_count: int = None,
|
|
57372
|
+
route_entry_type: str = None,
|
|
57373
|
+
source: str = None,
|
|
57374
|
+
):
|
|
57375
|
+
self.route_count = route_count
|
|
57376
|
+
self.route_entry_type = route_entry_type
|
|
57377
|
+
self.source = source
|
|
57378
|
+
|
|
57379
|
+
def validate(self):
|
|
57380
|
+
pass
|
|
57381
|
+
|
|
57382
|
+
def to_map(self):
|
|
57383
|
+
_map = super().to_map()
|
|
57384
|
+
if _map is not None:
|
|
57385
|
+
return _map
|
|
57386
|
+
|
|
57387
|
+
result = dict()
|
|
57388
|
+
if self.route_count is not None:
|
|
57389
|
+
result['RouteCount'] = self.route_count
|
|
57390
|
+
if self.route_entry_type is not None:
|
|
57391
|
+
result['RouteEntryType'] = self.route_entry_type
|
|
57392
|
+
if self.source is not None:
|
|
57393
|
+
result['Source'] = self.source
|
|
57394
|
+
return result
|
|
57395
|
+
|
|
57396
|
+
def from_map(self, m: dict = None):
|
|
57397
|
+
m = m or dict()
|
|
57398
|
+
if m.get('RouteCount') is not None:
|
|
57399
|
+
self.route_count = m.get('RouteCount')
|
|
57400
|
+
if m.get('RouteEntryType') is not None:
|
|
57401
|
+
self.route_entry_type = m.get('RouteEntryType')
|
|
57402
|
+
if m.get('Source') is not None:
|
|
57403
|
+
self.source = m.get('Source')
|
|
57404
|
+
return self
|
|
57405
|
+
|
|
57406
|
+
|
|
57090
57407
|
class DescribeVcoRouteEntriesResponseBody(TeaModel):
|
|
57091
57408
|
def __init__(
|
|
57092
57409
|
self,
|
|
@@ -57095,6 +57412,7 @@ class DescribeVcoRouteEntriesResponseBody(TeaModel):
|
|
|
57095
57412
|
request_id: str = None,
|
|
57096
57413
|
total_count: int = None,
|
|
57097
57414
|
vco_route_entries: List[DescribeVcoRouteEntriesResponseBodyVcoRouteEntries] = None,
|
|
57415
|
+
vpn_route_counts: List[DescribeVcoRouteEntriesResponseBodyVpnRouteCounts] = None,
|
|
57098
57416
|
):
|
|
57099
57417
|
# The number of the returned page.
|
|
57100
57418
|
self.page_number = page_number
|
|
@@ -57106,12 +57424,17 @@ class DescribeVcoRouteEntriesResponseBody(TeaModel):
|
|
|
57106
57424
|
self.total_count = total_count
|
|
57107
57425
|
# The list of routes.
|
|
57108
57426
|
self.vco_route_entries = vco_route_entries
|
|
57427
|
+
self.vpn_route_counts = vpn_route_counts
|
|
57109
57428
|
|
|
57110
57429
|
def validate(self):
|
|
57111
57430
|
if self.vco_route_entries:
|
|
57112
57431
|
for k in self.vco_route_entries:
|
|
57113
57432
|
if k:
|
|
57114
57433
|
k.validate()
|
|
57434
|
+
if self.vpn_route_counts:
|
|
57435
|
+
for k in self.vpn_route_counts:
|
|
57436
|
+
if k:
|
|
57437
|
+
k.validate()
|
|
57115
57438
|
|
|
57116
57439
|
def to_map(self):
|
|
57117
57440
|
_map = super().to_map()
|
|
@@ -57131,6 +57454,10 @@ class DescribeVcoRouteEntriesResponseBody(TeaModel):
|
|
|
57131
57454
|
if self.vco_route_entries is not None:
|
|
57132
57455
|
for k in self.vco_route_entries:
|
|
57133
57456
|
result['VcoRouteEntries'].append(k.to_map() if k else None)
|
|
57457
|
+
result['VpnRouteCounts'] = []
|
|
57458
|
+
if self.vpn_route_counts is not None:
|
|
57459
|
+
for k in self.vpn_route_counts:
|
|
57460
|
+
result['VpnRouteCounts'].append(k.to_map() if k else None)
|
|
57134
57461
|
return result
|
|
57135
57462
|
|
|
57136
57463
|
def from_map(self, m: dict = None):
|
|
@@ -57148,6 +57475,11 @@ class DescribeVcoRouteEntriesResponseBody(TeaModel):
|
|
|
57148
57475
|
for k in m.get('VcoRouteEntries'):
|
|
57149
57476
|
temp_model = DescribeVcoRouteEntriesResponseBodyVcoRouteEntries()
|
|
57150
57477
|
self.vco_route_entries.append(temp_model.from_map(k))
|
|
57478
|
+
self.vpn_route_counts = []
|
|
57479
|
+
if m.get('VpnRouteCounts') is not None:
|
|
57480
|
+
for k in m.get('VpnRouteCounts'):
|
|
57481
|
+
temp_model = DescribeVcoRouteEntriesResponseBodyVpnRouteCounts()
|
|
57482
|
+
self.vpn_route_counts.append(temp_model.from_map(k))
|
|
57151
57483
|
return self
|
|
57152
57484
|
|
|
57153
57485
|
|
|
@@ -60471,6 +60803,39 @@ class DescribeVpnAttachmentsRequest(TeaModel):
|
|
|
60471
60803
|
return self
|
|
60472
60804
|
|
|
60473
60805
|
|
|
60806
|
+
class DescribeVpnAttachmentsResponseBodyVpnAttachmentsTags(TeaModel):
|
|
60807
|
+
def __init__(
|
|
60808
|
+
self,
|
|
60809
|
+
key: str = None,
|
|
60810
|
+
value: str = None,
|
|
60811
|
+
):
|
|
60812
|
+
self.key = key
|
|
60813
|
+
self.value = value
|
|
60814
|
+
|
|
60815
|
+
def validate(self):
|
|
60816
|
+
pass
|
|
60817
|
+
|
|
60818
|
+
def to_map(self):
|
|
60819
|
+
_map = super().to_map()
|
|
60820
|
+
if _map is not None:
|
|
60821
|
+
return _map
|
|
60822
|
+
|
|
60823
|
+
result = dict()
|
|
60824
|
+
if self.key is not None:
|
|
60825
|
+
result['Key'] = self.key
|
|
60826
|
+
if self.value is not None:
|
|
60827
|
+
result['Value'] = self.value
|
|
60828
|
+
return result
|
|
60829
|
+
|
|
60830
|
+
def from_map(self, m: dict = None):
|
|
60831
|
+
m = m or dict()
|
|
60832
|
+
if m.get('Key') is not None:
|
|
60833
|
+
self.key = m.get('Key')
|
|
60834
|
+
if m.get('Value') is not None:
|
|
60835
|
+
self.value = m.get('Value')
|
|
60836
|
+
return self
|
|
60837
|
+
|
|
60838
|
+
|
|
60474
60839
|
class DescribeVpnAttachmentsResponseBodyVpnAttachments(TeaModel):
|
|
60475
60840
|
def __init__(
|
|
60476
60841
|
self,
|
|
@@ -60479,6 +60844,8 @@ class DescribeVpnAttachmentsResponseBodyVpnAttachments(TeaModel):
|
|
|
60479
60844
|
description: str = None,
|
|
60480
60845
|
instance_id: str = None,
|
|
60481
60846
|
name: str = None,
|
|
60847
|
+
tag: str = None,
|
|
60848
|
+
tags: List[DescribeVpnAttachmentsResponseBodyVpnAttachmentsTags] = None,
|
|
60482
60849
|
transit_router_id: str = None,
|
|
60483
60850
|
transit_router_name: str = None,
|
|
60484
60851
|
):
|
|
@@ -60495,13 +60862,18 @@ class DescribeVpnAttachmentsResponseBodyVpnAttachments(TeaModel):
|
|
|
60495
60862
|
self.instance_id = instance_id
|
|
60496
60863
|
# The name of the IPsec-VPN connection.
|
|
60497
60864
|
self.name = name
|
|
60865
|
+
self.tag = tag
|
|
60866
|
+
self.tags = tags
|
|
60498
60867
|
# The ID of the transit router with which the IPsec-VPN connection is associated.
|
|
60499
60868
|
self.transit_router_id = transit_router_id
|
|
60500
60869
|
# The name of the transit router.
|
|
60501
60870
|
self.transit_router_name = transit_router_name
|
|
60502
60871
|
|
|
60503
60872
|
def validate(self):
|
|
60504
|
-
|
|
60873
|
+
if self.tags:
|
|
60874
|
+
for k in self.tags:
|
|
60875
|
+
if k:
|
|
60876
|
+
k.validate()
|
|
60505
60877
|
|
|
60506
60878
|
def to_map(self):
|
|
60507
60879
|
_map = super().to_map()
|
|
@@ -60519,6 +60891,12 @@ class DescribeVpnAttachmentsResponseBodyVpnAttachments(TeaModel):
|
|
|
60519
60891
|
result['InstanceId'] = self.instance_id
|
|
60520
60892
|
if self.name is not None:
|
|
60521
60893
|
result['Name'] = self.name
|
|
60894
|
+
if self.tag is not None:
|
|
60895
|
+
result['Tag'] = self.tag
|
|
60896
|
+
result['Tags'] = []
|
|
60897
|
+
if self.tags is not None:
|
|
60898
|
+
for k in self.tags:
|
|
60899
|
+
result['Tags'].append(k.to_map() if k else None)
|
|
60522
60900
|
if self.transit_router_id is not None:
|
|
60523
60901
|
result['TransitRouterId'] = self.transit_router_id
|
|
60524
60902
|
if self.transit_router_name is not None:
|
|
@@ -60537,6 +60915,13 @@ class DescribeVpnAttachmentsResponseBodyVpnAttachments(TeaModel):
|
|
|
60537
60915
|
self.instance_id = m.get('InstanceId')
|
|
60538
60916
|
if m.get('Name') is not None:
|
|
60539
60917
|
self.name = m.get('Name')
|
|
60918
|
+
if m.get('Tag') is not None:
|
|
60919
|
+
self.tag = m.get('Tag')
|
|
60920
|
+
self.tags = []
|
|
60921
|
+
if m.get('Tags') is not None:
|
|
60922
|
+
for k in m.get('Tags'):
|
|
60923
|
+
temp_model = DescribeVpnAttachmentsResponseBodyVpnAttachmentsTags()
|
|
60924
|
+
self.tags.append(temp_model.from_map(k))
|
|
60540
60925
|
if m.get('TransitRouterId') is not None:
|
|
60541
60926
|
self.transit_router_id = m.get('TransitRouterId')
|
|
60542
60927
|
if m.get('TransitRouterName') is not None:
|
|
@@ -61141,6 +61526,7 @@ class DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptions(T
|
|
|
61141
61526
|
tunnel_bgp_config: DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptionsTunnelBgpConfig = None,
|
|
61142
61527
|
tunnel_id: str = None,
|
|
61143
61528
|
tunnel_ike_config: DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptionsTunnelIkeConfig = None,
|
|
61529
|
+
tunnel_index: int = None,
|
|
61144
61530
|
tunnel_ipsec_config: DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptionsTunnelIpsecConfig = None,
|
|
61145
61531
|
zone_no: str = None,
|
|
61146
61532
|
):
|
|
@@ -61186,6 +61572,7 @@ class DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptions(T
|
|
|
61186
61572
|
self.tunnel_id = tunnel_id
|
|
61187
61573
|
# The configuration of Phase 1 negotiations.
|
|
61188
61574
|
self.tunnel_ike_config = tunnel_ike_config
|
|
61575
|
+
self.tunnel_index = tunnel_index
|
|
61189
61576
|
# The configurations of Phase 2 negotiations.
|
|
61190
61577
|
self.tunnel_ipsec_config = tunnel_ipsec_config
|
|
61191
61578
|
# The zone where the tunnel is deployed.
|
|
@@ -61229,6 +61616,8 @@ class DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptions(T
|
|
|
61229
61616
|
result['TunnelId'] = self.tunnel_id
|
|
61230
61617
|
if self.tunnel_ike_config is not None:
|
|
61231
61618
|
result['TunnelIkeConfig'] = self.tunnel_ike_config.to_map()
|
|
61619
|
+
if self.tunnel_index is not None:
|
|
61620
|
+
result['TunnelIndex'] = self.tunnel_index
|
|
61232
61621
|
if self.tunnel_ipsec_config is not None:
|
|
61233
61622
|
result['TunnelIpsecConfig'] = self.tunnel_ipsec_config.to_map()
|
|
61234
61623
|
if self.zone_no is not None:
|
|
@@ -61261,6 +61650,8 @@ class DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptions(T
|
|
|
61261
61650
|
if m.get('TunnelIkeConfig') is not None:
|
|
61262
61651
|
temp_model = DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptionsTunnelIkeConfig()
|
|
61263
61652
|
self.tunnel_ike_config = temp_model.from_map(m['TunnelIkeConfig'])
|
|
61653
|
+
if m.get('TunnelIndex') is not None:
|
|
61654
|
+
self.tunnel_index = m.get('TunnelIndex')
|
|
61264
61655
|
if m.get('TunnelIpsecConfig') is not None:
|
|
61265
61656
|
temp_model = DescribeVpnConnectionResponseBodyTunnelOptionsSpecificationTunnelOptionsTunnelIpsecConfig()
|
|
61266
61657
|
self.tunnel_ipsec_config = temp_model.from_map(m['TunnelIpsecConfig'])
|
|
@@ -62656,6 +63047,7 @@ class DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptions
|
|
|
62656
63047
|
tunnel_bgp_config: DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptionsSpecificationTunnelOptionsTunnelBgpConfig = None,
|
|
62657
63048
|
tunnel_id: str = None,
|
|
62658
63049
|
tunnel_ike_config: DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptionsSpecificationTunnelOptionsTunnelIkeConfig = None,
|
|
63050
|
+
tunnel_index: int = None,
|
|
62659
63051
|
tunnel_ipsec_config: DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptionsSpecificationTunnelOptionsTunnelIpsecConfig = None,
|
|
62660
63052
|
zone_no: str = None,
|
|
62661
63053
|
):
|
|
@@ -62701,6 +63093,7 @@ class DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptions
|
|
|
62701
63093
|
self.tunnel_id = tunnel_id
|
|
62702
63094
|
# The configuration of Phase 1 negotiations.
|
|
62703
63095
|
self.tunnel_ike_config = tunnel_ike_config
|
|
63096
|
+
self.tunnel_index = tunnel_index
|
|
62704
63097
|
# The configurations of Phase 2 negotiations.
|
|
62705
63098
|
self.tunnel_ipsec_config = tunnel_ipsec_config
|
|
62706
63099
|
# The zone of the tunnel.
|
|
@@ -62742,6 +63135,8 @@ class DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptions
|
|
|
62742
63135
|
result['TunnelId'] = self.tunnel_id
|
|
62743
63136
|
if self.tunnel_ike_config is not None:
|
|
62744
63137
|
result['TunnelIkeConfig'] = self.tunnel_ike_config.to_map()
|
|
63138
|
+
if self.tunnel_index is not None:
|
|
63139
|
+
result['TunnelIndex'] = self.tunnel_index
|
|
62745
63140
|
if self.tunnel_ipsec_config is not None:
|
|
62746
63141
|
result['TunnelIpsecConfig'] = self.tunnel_ipsec_config.to_map()
|
|
62747
63142
|
if self.zone_no is not None:
|
|
@@ -62774,6 +63169,8 @@ class DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptions
|
|
|
62774
63169
|
if m.get('TunnelIkeConfig') is not None:
|
|
62775
63170
|
temp_model = DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptionsSpecificationTunnelOptionsTunnelIkeConfig()
|
|
62776
63171
|
self.tunnel_ike_config = temp_model.from_map(m['TunnelIkeConfig'])
|
|
63172
|
+
if m.get('TunnelIndex') is not None:
|
|
63173
|
+
self.tunnel_index = m.get('TunnelIndex')
|
|
62777
63174
|
if m.get('TunnelIpsecConfig') is not None:
|
|
62778
63175
|
temp_model = DescribeVpnConnectionsResponseBodyVpnConnectionsVpnConnectionTunnelOptionsSpecificationTunnelOptionsTunnelIpsecConfig()
|
|
62779
63176
|
self.tunnel_ipsec_config = temp_model.from_map(m['TunnelIpsecConfig'])
|
|
@@ -64033,33 +64430,38 @@ class DescribeVpnGatewayResponseBody(TeaModel):
|
|
|
64033
64430
|
# * **updating**\
|
|
64034
64431
|
# * **deleting**\
|
|
64035
64432
|
self.status = status
|
|
64036
|
-
# The automatically generated tag of the
|
|
64433
|
+
# The tag that is automatically generated for the VPN gateway. The tag consists of the following parameters:
|
|
64037
64434
|
#
|
|
64038
64435
|
# * **VpnEnableBgp**: indicates whether the VPN gateway supports BGP. Valid values:
|
|
64039
64436
|
#
|
|
64040
64437
|
# * **true**\
|
|
64041
64438
|
# * **false**\
|
|
64042
64439
|
#
|
|
64043
|
-
# * **VisuallySsl**: indicates whether the VPN gateway allows you to view information
|
|
64440
|
+
# * **VisuallySsl**: indicates whether the VPN gateway allows you to view the connection information of SSL clients. Valid values:
|
|
64044
64441
|
#
|
|
64045
64442
|
# * **true**\
|
|
64046
64443
|
# * **false**\
|
|
64047
64444
|
#
|
|
64048
|
-
# * **PbrPriority**: indicates whether the VPN gateway allows you to configure priorities for policy-based routes.
|
|
64445
|
+
# * **PbrPriority**: indicates whether the VPN gateway allows you to configure priorities for policy-based routes. Valid values:
|
|
64049
64446
|
#
|
|
64050
64447
|
# * **true**\
|
|
64051
64448
|
# * **false**\
|
|
64052
64449
|
#
|
|
64053
|
-
# * **VpnNewImage**: indicates whether the VPN gateway is upgraded.
|
|
64450
|
+
# * **VpnNewImage**: indicates whether the VPN gateway is upgraded. Valid values:
|
|
64054
64451
|
#
|
|
64055
64452
|
# * **true**\
|
|
64056
64453
|
# * **false**\
|
|
64057
64454
|
#
|
|
64058
|
-
# * **description
|
|
64455
|
+
# * **description**: the description of the VPN gateway. This parameter is only for internal use.
|
|
64456
|
+
#
|
|
64457
|
+
# * **VpnVersion**: the version of the VPN gateway.
|
|
64458
|
+
#
|
|
64459
|
+
# * **IDaaSNewVersion**: indicates whether the VPN gateway can be associated with an EIAM 2.0 instance.
|
|
64059
64460
|
#
|
|
64060
|
-
#
|
|
64461
|
+
# * **true**\
|
|
64462
|
+
# * **false**\
|
|
64061
64463
|
self.tag = tag
|
|
64062
|
-
# The
|
|
64464
|
+
# The tags that are added to the VPN gateway.
|
|
64063
64465
|
self.tags = tags
|
|
64064
64466
|
# The ID of the vSwitch to which the VPN gateway belongs.
|
|
64065
64467
|
self.v_switch_id = v_switch_id
|
|
@@ -64067,9 +64469,7 @@ class DescribeVpnGatewayResponseBody(TeaModel):
|
|
|
64067
64469
|
self.vpc_id = vpc_id
|
|
64068
64470
|
# The ID of the VPN gateway.
|
|
64069
64471
|
self.vpn_gateway_id = vpn_gateway_id
|
|
64070
|
-
# The type of
|
|
64071
|
-
#
|
|
64072
|
-
# Only **Normal** may be returned, which indicates a standard VPN gateway.
|
|
64472
|
+
# The type of VPN gateway. Only **Normal** may be returned, which indicates a standard VPN gateway.
|
|
64073
64473
|
self.vpn_type = vpn_type
|
|
64074
64474
|
|
|
64075
64475
|
def validate(self):
|
|
@@ -64441,17 +64841,13 @@ class DescribeVpnGatewaysRequestTag(TeaModel):
|
|
|
64441
64841
|
key: str = None,
|
|
64442
64842
|
value: str = None,
|
|
64443
64843
|
):
|
|
64444
|
-
# The tag key.
|
|
64445
|
-
#
|
|
64446
|
-
# It can be at most 64 characters in length, and cannot contain `http://` or `https://`. It cannot start with `aliyun` or `acs:`.
|
|
64844
|
+
# The tag key.
|
|
64447
64845
|
#
|
|
64448
|
-
# You can specify at most 20 tag keys
|
|
64846
|
+
# You can specify at most 20 tag keys at a time.
|
|
64449
64847
|
self.key = key
|
|
64450
64848
|
# The tag value.
|
|
64451
64849
|
#
|
|
64452
|
-
#
|
|
64453
|
-
#
|
|
64454
|
-
# Each tag key corresponds to one tag value. You can specify at most 20 tag values in each call.
|
|
64850
|
+
# Each tag key corresponds to one tag value. You can specify at most 20 tag values at a time.
|
|
64455
64851
|
self.value = value
|
|
64456
64852
|
|
|
64457
64853
|
def validate(self):
|
|
@@ -64532,11 +64928,7 @@ class DescribeVpnGatewaysRequest(TeaModel):
|
|
|
64532
64928
|
# * **updating**\
|
|
64533
64929
|
# * **deleting**\
|
|
64534
64930
|
self.status = status
|
|
64535
|
-
# The
|
|
64536
|
-
#
|
|
64537
|
-
# The value of this parameter can be an empty string and cannot exceed 128 characters in length. It cannot start with `aliyun` or `acs:`, and cannot contain `http://` or `https://`.
|
|
64538
|
-
#
|
|
64539
|
-
# Each tag key corresponds to one tag value. You can specify at most 20 tag values in each call.
|
|
64931
|
+
# The tags that are added to the VPN gateway.
|
|
64540
64932
|
self.tag = tag
|
|
64541
64933
|
# The ID of the virtual private cloud (VPC) to which the VPN gateway belongs.
|
|
64542
64934
|
self.vpc_id = vpc_id
|
|
@@ -64922,7 +65314,7 @@ class DescribeVpnGatewaysResponseBodyVpnGatewaysVpnGateway(TeaModel):
|
|
|
64922
65314
|
# * **updating**\
|
|
64923
65315
|
# * **deleting**\
|
|
64924
65316
|
self.status = status
|
|
64925
|
-
# The tag that is automatically generated for the VPN gateway.
|
|
65317
|
+
# The tag that is automatically generated for the VPN gateway.
|
|
64926
65318
|
#
|
|
64927
65319
|
# * **VpnEnableBgp**: indicates whether the VPN gateway supports BGP. Valid values:
|
|
64928
65320
|
#
|
|
@@ -64941,12 +65333,17 @@ class DescribeVpnGatewaysResponseBodyVpnGatewaysVpnGateway(TeaModel):
|
|
|
64941
65333
|
#
|
|
64942
65334
|
# * **VpnNewImage**: indicates whether the VPN gateway is upgraded. Valid values:
|
|
64943
65335
|
#
|
|
64944
|
-
# * **true
|
|
65336
|
+
# * **true**: queries only SQL templates that need to be optimized.
|
|
64945
65337
|
# * **false**: does not query only SQL statements that need to be optimized.
|
|
64946
65338
|
#
|
|
64947
65339
|
# * **description**: the description of the VPN gateway. This parameter is only for internal use.
|
|
64948
65340
|
#
|
|
64949
65341
|
# * **VpnVersion**: the version of the VPN gateway.
|
|
65342
|
+
#
|
|
65343
|
+
# * **IDaaSNewVersion**: indicates whether the VPN gateway can be associated with an EIAM 2.0 instance.
|
|
65344
|
+
#
|
|
65345
|
+
# * **true**\
|
|
65346
|
+
# * **false**\
|
|
64950
65347
|
self.tag = tag
|
|
64951
65348
|
# The tags that are added to the VPN gateway.
|
|
64952
65349
|
self.tags = tags
|
|
@@ -65145,7 +65542,7 @@ class DescribeVpnGatewaysResponseBody(TeaModel):
|
|
|
65145
65542
|
self.request_id = request_id
|
|
65146
65543
|
# The number of entries returned.
|
|
65147
65544
|
self.total_count = total_count
|
|
65148
|
-
# The VPN gateways.
|
|
65545
|
+
# The information about the VPN gateways.
|
|
65149
65546
|
self.vpn_gateways = vpn_gateways
|
|
65150
65547
|
|
|
65151
65548
|
def validate(self):
|
|
@@ -65629,6 +66026,80 @@ class DescribeVpnRouteEntriesRequest(TeaModel):
|
|
|
65629
66026
|
return self
|
|
65630
66027
|
|
|
65631
66028
|
|
|
66029
|
+
class DescribeVpnRouteEntriesResponseBodyVpnRouteCountsVpnRouteCount(TeaModel):
|
|
66030
|
+
def __init__(
|
|
66031
|
+
self,
|
|
66032
|
+
route_count: int = None,
|
|
66033
|
+
route_entry_type: str = None,
|
|
66034
|
+
source: str = None,
|
|
66035
|
+
):
|
|
66036
|
+
self.route_count = route_count
|
|
66037
|
+
self.route_entry_type = route_entry_type
|
|
66038
|
+
self.source = source
|
|
66039
|
+
|
|
66040
|
+
def validate(self):
|
|
66041
|
+
pass
|
|
66042
|
+
|
|
66043
|
+
def to_map(self):
|
|
66044
|
+
_map = super().to_map()
|
|
66045
|
+
if _map is not None:
|
|
66046
|
+
return _map
|
|
66047
|
+
|
|
66048
|
+
result = dict()
|
|
66049
|
+
if self.route_count is not None:
|
|
66050
|
+
result['RouteCount'] = self.route_count
|
|
66051
|
+
if self.route_entry_type is not None:
|
|
66052
|
+
result['RouteEntryType'] = self.route_entry_type
|
|
66053
|
+
if self.source is not None:
|
|
66054
|
+
result['Source'] = self.source
|
|
66055
|
+
return result
|
|
66056
|
+
|
|
66057
|
+
def from_map(self, m: dict = None):
|
|
66058
|
+
m = m or dict()
|
|
66059
|
+
if m.get('RouteCount') is not None:
|
|
66060
|
+
self.route_count = m.get('RouteCount')
|
|
66061
|
+
if m.get('RouteEntryType') is not None:
|
|
66062
|
+
self.route_entry_type = m.get('RouteEntryType')
|
|
66063
|
+
if m.get('Source') is not None:
|
|
66064
|
+
self.source = m.get('Source')
|
|
66065
|
+
return self
|
|
66066
|
+
|
|
66067
|
+
|
|
66068
|
+
class DescribeVpnRouteEntriesResponseBodyVpnRouteCounts(TeaModel):
|
|
66069
|
+
def __init__(
|
|
66070
|
+
self,
|
|
66071
|
+
vpn_route_count: List[DescribeVpnRouteEntriesResponseBodyVpnRouteCountsVpnRouteCount] = None,
|
|
66072
|
+
):
|
|
66073
|
+
self.vpn_route_count = vpn_route_count
|
|
66074
|
+
|
|
66075
|
+
def validate(self):
|
|
66076
|
+
if self.vpn_route_count:
|
|
66077
|
+
for k in self.vpn_route_count:
|
|
66078
|
+
if k:
|
|
66079
|
+
k.validate()
|
|
66080
|
+
|
|
66081
|
+
def to_map(self):
|
|
66082
|
+
_map = super().to_map()
|
|
66083
|
+
if _map is not None:
|
|
66084
|
+
return _map
|
|
66085
|
+
|
|
66086
|
+
result = dict()
|
|
66087
|
+
result['VpnRouteCount'] = []
|
|
66088
|
+
if self.vpn_route_count is not None:
|
|
66089
|
+
for k in self.vpn_route_count:
|
|
66090
|
+
result['VpnRouteCount'].append(k.to_map() if k else None)
|
|
66091
|
+
return result
|
|
66092
|
+
|
|
66093
|
+
def from_map(self, m: dict = None):
|
|
66094
|
+
m = m or dict()
|
|
66095
|
+
self.vpn_route_count = []
|
|
66096
|
+
if m.get('VpnRouteCount') is not None:
|
|
66097
|
+
for k in m.get('VpnRouteCount'):
|
|
66098
|
+
temp_model = DescribeVpnRouteEntriesResponseBodyVpnRouteCountsVpnRouteCount()
|
|
66099
|
+
self.vpn_route_count.append(temp_model.from_map(k))
|
|
66100
|
+
return self
|
|
66101
|
+
|
|
66102
|
+
|
|
65632
66103
|
class DescribeVpnRouteEntriesResponseBodyVpnRouteEntriesVpnRouteEntry(TeaModel):
|
|
65633
66104
|
def __init__(
|
|
65634
66105
|
self,
|
|
@@ -65781,6 +66252,7 @@ class DescribeVpnRouteEntriesResponseBody(TeaModel):
|
|
|
65781
66252
|
page_size: int = None,
|
|
65782
66253
|
request_id: str = None,
|
|
65783
66254
|
total_count: int = None,
|
|
66255
|
+
vpn_route_counts: DescribeVpnRouteEntriesResponseBodyVpnRouteCounts = None,
|
|
65784
66256
|
vpn_route_entries: DescribeVpnRouteEntriesResponseBodyVpnRouteEntries = None,
|
|
65785
66257
|
):
|
|
65786
66258
|
# The page number of the returned page.
|
|
@@ -65791,10 +66263,13 @@ class DescribeVpnRouteEntriesResponseBody(TeaModel):
|
|
|
65791
66263
|
self.request_id = request_id
|
|
65792
66264
|
# The total number of entries returned.
|
|
65793
66265
|
self.total_count = total_count
|
|
66266
|
+
self.vpn_route_counts = vpn_route_counts
|
|
65794
66267
|
# The list of route entries.
|
|
65795
66268
|
self.vpn_route_entries = vpn_route_entries
|
|
65796
66269
|
|
|
65797
66270
|
def validate(self):
|
|
66271
|
+
if self.vpn_route_counts:
|
|
66272
|
+
self.vpn_route_counts.validate()
|
|
65798
66273
|
if self.vpn_route_entries:
|
|
65799
66274
|
self.vpn_route_entries.validate()
|
|
65800
66275
|
|
|
@@ -65812,6 +66287,8 @@ class DescribeVpnRouteEntriesResponseBody(TeaModel):
|
|
|
65812
66287
|
result['RequestId'] = self.request_id
|
|
65813
66288
|
if self.total_count is not None:
|
|
65814
66289
|
result['TotalCount'] = self.total_count
|
|
66290
|
+
if self.vpn_route_counts is not None:
|
|
66291
|
+
result['VpnRouteCounts'] = self.vpn_route_counts.to_map()
|
|
65815
66292
|
if self.vpn_route_entries is not None:
|
|
65816
66293
|
result['VpnRouteEntries'] = self.vpn_route_entries.to_map()
|
|
65817
66294
|
return result
|
|
@@ -65826,6 +66303,9 @@ class DescribeVpnRouteEntriesResponseBody(TeaModel):
|
|
|
65826
66303
|
self.request_id = m.get('RequestId')
|
|
65827
66304
|
if m.get('TotalCount') is not None:
|
|
65828
66305
|
self.total_count = m.get('TotalCount')
|
|
66306
|
+
if m.get('VpnRouteCounts') is not None:
|
|
66307
|
+
temp_model = DescribeVpnRouteEntriesResponseBodyVpnRouteCounts()
|
|
66308
|
+
self.vpn_route_counts = temp_model.from_map(m['VpnRouteCounts'])
|
|
65829
66309
|
if m.get('VpnRouteEntries') is not None:
|
|
65830
66310
|
temp_model = DescribeVpnRouteEntriesResponseBodyVpnRouteEntries()
|
|
65831
66311
|
self.vpn_route_entries = temp_model.from_map(m['VpnRouteEntries'])
|
|
@@ -67547,7 +68027,7 @@ class DissociateVpnGatewayWithCertificateRequest(TeaModel):
|
|
|
67547
68027
|
):
|
|
67548
68028
|
# The certificate ID.
|
|
67549
68029
|
#
|
|
67550
|
-
# >
|
|
68030
|
+
# > The certificate ID refers to the ID generated after the SSL certificate is associated with the VPN gateway. It is not the ID of the SSL certificate. You can call the [ListVpnCertificateAssociations](https://help.aliyun.com/document_detail/2521961.html) operation to query certificate IDs.
|
|
67551
68031
|
#
|
|
67552
68032
|
# This parameter is required.
|
|
67553
68033
|
self.certificate_id = certificate_id
|
|
@@ -89062,6 +89542,7 @@ class ModifyTunnelAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig(Te
|
|
|
89062
89542
|
class ModifyTunnelAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
89063
89543
|
def __init__(
|
|
89064
89544
|
self,
|
|
89545
|
+
customer_gateway_id: str = None,
|
|
89065
89546
|
enable_dpd: bool = None,
|
|
89066
89547
|
enable_nat_traversal: bool = None,
|
|
89067
89548
|
remote_ca_certificate: str = None,
|
|
@@ -89069,6 +89550,7 @@ class ModifyTunnelAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
89069
89550
|
tunnel_ike_config: ModifyTunnelAttributeRequestTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
89070
89551
|
tunnel_ipsec_config: ModifyTunnelAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
89071
89552
|
):
|
|
89553
|
+
self.customer_gateway_id = customer_gateway_id
|
|
89072
89554
|
# Specifies whether to enable the dead peer detection (DPD) feature. Valid values:
|
|
89073
89555
|
#
|
|
89074
89556
|
# * **true**: DPD is enabled. The IPsec initiator sends DPD packets to verify the existence and availability of the IPsec peer. If no response is received from the peer within a specified period of time, the IPsec peer is considered disconnected. Then, the ISAKMP SA, IPsec SA, and IPsec tunnel are deleted.
|
|
@@ -89104,6 +89586,8 @@ class ModifyTunnelAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
89104
89586
|
return _map
|
|
89105
89587
|
|
|
89106
89588
|
result = dict()
|
|
89589
|
+
if self.customer_gateway_id is not None:
|
|
89590
|
+
result['CustomerGatewayId'] = self.customer_gateway_id
|
|
89107
89591
|
if self.enable_dpd is not None:
|
|
89108
89592
|
result['EnableDpd'] = self.enable_dpd
|
|
89109
89593
|
if self.enable_nat_traversal is not None:
|
|
@@ -89120,6 +89604,8 @@ class ModifyTunnelAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
89120
89604
|
|
|
89121
89605
|
def from_map(self, m: dict = None):
|
|
89122
89606
|
m = m or dict()
|
|
89607
|
+
if m.get('CustomerGatewayId') is not None:
|
|
89608
|
+
self.customer_gateway_id = m.get('CustomerGatewayId')
|
|
89123
89609
|
if m.get('EnableDpd') is not None:
|
|
89124
89610
|
self.enable_dpd = m.get('EnableDpd')
|
|
89125
89611
|
if m.get('EnableNatTraversal') is not None:
|
|
@@ -91070,6 +91556,242 @@ class ModifyVpcPrefixListResponse(TeaModel):
|
|
|
91070
91556
|
return self
|
|
91071
91557
|
|
|
91072
91558
|
|
|
91559
|
+
class ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelBgpConfig(TeaModel):
|
|
91560
|
+
def __init__(
|
|
91561
|
+
self,
|
|
91562
|
+
local_asn: int = None,
|
|
91563
|
+
local_bgp_ip: str = None,
|
|
91564
|
+
tunnel_cidr: str = None,
|
|
91565
|
+
):
|
|
91566
|
+
self.local_asn = local_asn
|
|
91567
|
+
self.local_bgp_ip = local_bgp_ip
|
|
91568
|
+
self.tunnel_cidr = tunnel_cidr
|
|
91569
|
+
|
|
91570
|
+
def validate(self):
|
|
91571
|
+
pass
|
|
91572
|
+
|
|
91573
|
+
def to_map(self):
|
|
91574
|
+
_map = super().to_map()
|
|
91575
|
+
if _map is not None:
|
|
91576
|
+
return _map
|
|
91577
|
+
|
|
91578
|
+
result = dict()
|
|
91579
|
+
if self.local_asn is not None:
|
|
91580
|
+
result['LocalAsn'] = self.local_asn
|
|
91581
|
+
if self.local_bgp_ip is not None:
|
|
91582
|
+
result['LocalBgpIp'] = self.local_bgp_ip
|
|
91583
|
+
if self.tunnel_cidr is not None:
|
|
91584
|
+
result['TunnelCidr'] = self.tunnel_cidr
|
|
91585
|
+
return result
|
|
91586
|
+
|
|
91587
|
+
def from_map(self, m: dict = None):
|
|
91588
|
+
m = m or dict()
|
|
91589
|
+
if m.get('LocalAsn') is not None:
|
|
91590
|
+
self.local_asn = m.get('LocalAsn')
|
|
91591
|
+
if m.get('LocalBgpIp') is not None:
|
|
91592
|
+
self.local_bgp_ip = m.get('LocalBgpIp')
|
|
91593
|
+
if m.get('TunnelCidr') is not None:
|
|
91594
|
+
self.tunnel_cidr = m.get('TunnelCidr')
|
|
91595
|
+
return self
|
|
91596
|
+
|
|
91597
|
+
|
|
91598
|
+
class ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIkeConfig(TeaModel):
|
|
91599
|
+
def __init__(
|
|
91600
|
+
self,
|
|
91601
|
+
ike_auth_alg: str = None,
|
|
91602
|
+
ike_enc_alg: str = None,
|
|
91603
|
+
ike_lifetime: int = None,
|
|
91604
|
+
ike_mode: str = None,
|
|
91605
|
+
ike_pfs: str = None,
|
|
91606
|
+
ike_version: str = None,
|
|
91607
|
+
local_id: str = None,
|
|
91608
|
+
psk: str = None,
|
|
91609
|
+
remote_id: str = None,
|
|
91610
|
+
):
|
|
91611
|
+
self.ike_auth_alg = ike_auth_alg
|
|
91612
|
+
self.ike_enc_alg = ike_enc_alg
|
|
91613
|
+
self.ike_lifetime = ike_lifetime
|
|
91614
|
+
self.ike_mode = ike_mode
|
|
91615
|
+
self.ike_pfs = ike_pfs
|
|
91616
|
+
self.ike_version = ike_version
|
|
91617
|
+
self.local_id = local_id
|
|
91618
|
+
self.psk = psk
|
|
91619
|
+
self.remote_id = remote_id
|
|
91620
|
+
|
|
91621
|
+
def validate(self):
|
|
91622
|
+
pass
|
|
91623
|
+
|
|
91624
|
+
def to_map(self):
|
|
91625
|
+
_map = super().to_map()
|
|
91626
|
+
if _map is not None:
|
|
91627
|
+
return _map
|
|
91628
|
+
|
|
91629
|
+
result = dict()
|
|
91630
|
+
if self.ike_auth_alg is not None:
|
|
91631
|
+
result['IkeAuthAlg'] = self.ike_auth_alg
|
|
91632
|
+
if self.ike_enc_alg is not None:
|
|
91633
|
+
result['IkeEncAlg'] = self.ike_enc_alg
|
|
91634
|
+
if self.ike_lifetime is not None:
|
|
91635
|
+
result['IkeLifetime'] = self.ike_lifetime
|
|
91636
|
+
if self.ike_mode is not None:
|
|
91637
|
+
result['IkeMode'] = self.ike_mode
|
|
91638
|
+
if self.ike_pfs is not None:
|
|
91639
|
+
result['IkePfs'] = self.ike_pfs
|
|
91640
|
+
if self.ike_version is not None:
|
|
91641
|
+
result['IkeVersion'] = self.ike_version
|
|
91642
|
+
if self.local_id is not None:
|
|
91643
|
+
result['LocalId'] = self.local_id
|
|
91644
|
+
if self.psk is not None:
|
|
91645
|
+
result['Psk'] = self.psk
|
|
91646
|
+
if self.remote_id is not None:
|
|
91647
|
+
result['RemoteId'] = self.remote_id
|
|
91648
|
+
return result
|
|
91649
|
+
|
|
91650
|
+
def from_map(self, m: dict = None):
|
|
91651
|
+
m = m or dict()
|
|
91652
|
+
if m.get('IkeAuthAlg') is not None:
|
|
91653
|
+
self.ike_auth_alg = m.get('IkeAuthAlg')
|
|
91654
|
+
if m.get('IkeEncAlg') is not None:
|
|
91655
|
+
self.ike_enc_alg = m.get('IkeEncAlg')
|
|
91656
|
+
if m.get('IkeLifetime') is not None:
|
|
91657
|
+
self.ike_lifetime = m.get('IkeLifetime')
|
|
91658
|
+
if m.get('IkeMode') is not None:
|
|
91659
|
+
self.ike_mode = m.get('IkeMode')
|
|
91660
|
+
if m.get('IkePfs') is not None:
|
|
91661
|
+
self.ike_pfs = m.get('IkePfs')
|
|
91662
|
+
if m.get('IkeVersion') is not None:
|
|
91663
|
+
self.ike_version = m.get('IkeVersion')
|
|
91664
|
+
if m.get('LocalId') is not None:
|
|
91665
|
+
self.local_id = m.get('LocalId')
|
|
91666
|
+
if m.get('Psk') is not None:
|
|
91667
|
+
self.psk = m.get('Psk')
|
|
91668
|
+
if m.get('RemoteId') is not None:
|
|
91669
|
+
self.remote_id = m.get('RemoteId')
|
|
91670
|
+
return self
|
|
91671
|
+
|
|
91672
|
+
|
|
91673
|
+
class ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig(TeaModel):
|
|
91674
|
+
def __init__(
|
|
91675
|
+
self,
|
|
91676
|
+
ipsec_auth_alg: str = None,
|
|
91677
|
+
ipsec_enc_alg: str = None,
|
|
91678
|
+
ipsec_lifetime: int = None,
|
|
91679
|
+
ipsec_pfs: str = None,
|
|
91680
|
+
):
|
|
91681
|
+
self.ipsec_auth_alg = ipsec_auth_alg
|
|
91682
|
+
self.ipsec_enc_alg = ipsec_enc_alg
|
|
91683
|
+
self.ipsec_lifetime = ipsec_lifetime
|
|
91684
|
+
self.ipsec_pfs = ipsec_pfs
|
|
91685
|
+
|
|
91686
|
+
def validate(self):
|
|
91687
|
+
pass
|
|
91688
|
+
|
|
91689
|
+
def to_map(self):
|
|
91690
|
+
_map = super().to_map()
|
|
91691
|
+
if _map is not None:
|
|
91692
|
+
return _map
|
|
91693
|
+
|
|
91694
|
+
result = dict()
|
|
91695
|
+
if self.ipsec_auth_alg is not None:
|
|
91696
|
+
result['IpsecAuthAlg'] = self.ipsec_auth_alg
|
|
91697
|
+
if self.ipsec_enc_alg is not None:
|
|
91698
|
+
result['IpsecEncAlg'] = self.ipsec_enc_alg
|
|
91699
|
+
if self.ipsec_lifetime is not None:
|
|
91700
|
+
result['IpsecLifetime'] = self.ipsec_lifetime
|
|
91701
|
+
if self.ipsec_pfs is not None:
|
|
91702
|
+
result['IpsecPfs'] = self.ipsec_pfs
|
|
91703
|
+
return result
|
|
91704
|
+
|
|
91705
|
+
def from_map(self, m: dict = None):
|
|
91706
|
+
m = m or dict()
|
|
91707
|
+
if m.get('IpsecAuthAlg') is not None:
|
|
91708
|
+
self.ipsec_auth_alg = m.get('IpsecAuthAlg')
|
|
91709
|
+
if m.get('IpsecEncAlg') is not None:
|
|
91710
|
+
self.ipsec_enc_alg = m.get('IpsecEncAlg')
|
|
91711
|
+
if m.get('IpsecLifetime') is not None:
|
|
91712
|
+
self.ipsec_lifetime = m.get('IpsecLifetime')
|
|
91713
|
+
if m.get('IpsecPfs') is not None:
|
|
91714
|
+
self.ipsec_pfs = m.get('IpsecPfs')
|
|
91715
|
+
return self
|
|
91716
|
+
|
|
91717
|
+
|
|
91718
|
+
class ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
91719
|
+
def __init__(
|
|
91720
|
+
self,
|
|
91721
|
+
customer_gateway_id: str = None,
|
|
91722
|
+
enable_dpd: bool = None,
|
|
91723
|
+
enable_nat_traversal: bool = None,
|
|
91724
|
+
tunnel_bgp_config: ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelBgpConfig = None,
|
|
91725
|
+
tunnel_id: str = None,
|
|
91726
|
+
tunnel_ike_config: ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
91727
|
+
tunnel_index: int = None,
|
|
91728
|
+
tunnel_ipsec_config: ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
91729
|
+
):
|
|
91730
|
+
self.customer_gateway_id = customer_gateway_id
|
|
91731
|
+
self.enable_dpd = enable_dpd
|
|
91732
|
+
self.enable_nat_traversal = enable_nat_traversal
|
|
91733
|
+
self.tunnel_bgp_config = tunnel_bgp_config
|
|
91734
|
+
self.tunnel_id = tunnel_id
|
|
91735
|
+
self.tunnel_ike_config = tunnel_ike_config
|
|
91736
|
+
self.tunnel_index = tunnel_index
|
|
91737
|
+
self.tunnel_ipsec_config = tunnel_ipsec_config
|
|
91738
|
+
|
|
91739
|
+
def validate(self):
|
|
91740
|
+
if self.tunnel_bgp_config:
|
|
91741
|
+
self.tunnel_bgp_config.validate()
|
|
91742
|
+
if self.tunnel_ike_config:
|
|
91743
|
+
self.tunnel_ike_config.validate()
|
|
91744
|
+
if self.tunnel_ipsec_config:
|
|
91745
|
+
self.tunnel_ipsec_config.validate()
|
|
91746
|
+
|
|
91747
|
+
def to_map(self):
|
|
91748
|
+
_map = super().to_map()
|
|
91749
|
+
if _map is not None:
|
|
91750
|
+
return _map
|
|
91751
|
+
|
|
91752
|
+
result = dict()
|
|
91753
|
+
if self.customer_gateway_id is not None:
|
|
91754
|
+
result['CustomerGatewayId'] = self.customer_gateway_id
|
|
91755
|
+
if self.enable_dpd is not None:
|
|
91756
|
+
result['EnableDpd'] = self.enable_dpd
|
|
91757
|
+
if self.enable_nat_traversal is not None:
|
|
91758
|
+
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
91759
|
+
if self.tunnel_bgp_config is not None:
|
|
91760
|
+
result['TunnelBgpConfig'] = self.tunnel_bgp_config.to_map()
|
|
91761
|
+
if self.tunnel_id is not None:
|
|
91762
|
+
result['TunnelId'] = self.tunnel_id
|
|
91763
|
+
if self.tunnel_ike_config is not None:
|
|
91764
|
+
result['TunnelIkeConfig'] = self.tunnel_ike_config.to_map()
|
|
91765
|
+
if self.tunnel_index is not None:
|
|
91766
|
+
result['TunnelIndex'] = self.tunnel_index
|
|
91767
|
+
if self.tunnel_ipsec_config is not None:
|
|
91768
|
+
result['TunnelIpsecConfig'] = self.tunnel_ipsec_config.to_map()
|
|
91769
|
+
return result
|
|
91770
|
+
|
|
91771
|
+
def from_map(self, m: dict = None):
|
|
91772
|
+
m = m or dict()
|
|
91773
|
+
if m.get('CustomerGatewayId') is not None:
|
|
91774
|
+
self.customer_gateway_id = m.get('CustomerGatewayId')
|
|
91775
|
+
if m.get('EnableDpd') is not None:
|
|
91776
|
+
self.enable_dpd = m.get('EnableDpd')
|
|
91777
|
+
if m.get('EnableNatTraversal') is not None:
|
|
91778
|
+
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
91779
|
+
if m.get('TunnelBgpConfig') is not None:
|
|
91780
|
+
temp_model = ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelBgpConfig()
|
|
91781
|
+
self.tunnel_bgp_config = temp_model.from_map(m['TunnelBgpConfig'])
|
|
91782
|
+
if m.get('TunnelId') is not None:
|
|
91783
|
+
self.tunnel_id = m.get('TunnelId')
|
|
91784
|
+
if m.get('TunnelIkeConfig') is not None:
|
|
91785
|
+
temp_model = ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIkeConfig()
|
|
91786
|
+
self.tunnel_ike_config = temp_model.from_map(m['TunnelIkeConfig'])
|
|
91787
|
+
if m.get('TunnelIndex') is not None:
|
|
91788
|
+
self.tunnel_index = m.get('TunnelIndex')
|
|
91789
|
+
if m.get('TunnelIpsecConfig') is not None:
|
|
91790
|
+
temp_model = ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig()
|
|
91791
|
+
self.tunnel_ipsec_config = temp_model.from_map(m['TunnelIpsecConfig'])
|
|
91792
|
+
return self
|
|
91793
|
+
|
|
91794
|
+
|
|
91073
91795
|
class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
91074
91796
|
def __init__(
|
|
91075
91797
|
self,
|
|
@@ -91080,6 +91802,7 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
91080
91802
|
effect_immediately: bool = None,
|
|
91081
91803
|
enable_dpd: bool = None,
|
|
91082
91804
|
enable_nat_traversal: bool = None,
|
|
91805
|
+
enable_tunnels_bgp: bool = None,
|
|
91083
91806
|
health_check_config: str = None,
|
|
91084
91807
|
ike_config: str = None,
|
|
91085
91808
|
ipsec_config: str = None,
|
|
@@ -91092,6 +91815,7 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
91092
91815
|
remote_subnet: str = None,
|
|
91093
91816
|
resource_owner_account: str = None,
|
|
91094
91817
|
resource_owner_id: int = None,
|
|
91818
|
+
tunnel_options_specification: List[ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecification] = None,
|
|
91095
91819
|
vpn_connection_id: str = None,
|
|
91096
91820
|
):
|
|
91097
91821
|
# Specifies whether to automatically configure routes. Valid values:
|
|
@@ -91142,6 +91866,7 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
91142
91866
|
# * **true** After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the IPsec tunnel.
|
|
91143
91867
|
# * **false**\
|
|
91144
91868
|
self.enable_nat_traversal = enable_nat_traversal
|
|
91869
|
+
self.enable_tunnels_bgp = enable_tunnels_bgp
|
|
91145
91870
|
# The health check configurations:
|
|
91146
91871
|
#
|
|
91147
91872
|
# * **HealthCheckConfig.enable**: specifies whether to enable the health check feature. Valid values:
|
|
@@ -91232,13 +91957,17 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
91232
91957
|
self.remote_subnet = remote_subnet
|
|
91233
91958
|
self.resource_owner_account = resource_owner_account
|
|
91234
91959
|
self.resource_owner_id = resource_owner_id
|
|
91960
|
+
self.tunnel_options_specification = tunnel_options_specification
|
|
91235
91961
|
# The ID of the IPsec-VPN connection.
|
|
91236
91962
|
#
|
|
91237
91963
|
# This parameter is required.
|
|
91238
91964
|
self.vpn_connection_id = vpn_connection_id
|
|
91239
91965
|
|
|
91240
91966
|
def validate(self):
|
|
91241
|
-
|
|
91967
|
+
if self.tunnel_options_specification:
|
|
91968
|
+
for k in self.tunnel_options_specification:
|
|
91969
|
+
if k:
|
|
91970
|
+
k.validate()
|
|
91242
91971
|
|
|
91243
91972
|
def to_map(self):
|
|
91244
91973
|
_map = super().to_map()
|
|
@@ -91260,6 +91989,8 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
91260
91989
|
result['EnableDpd'] = self.enable_dpd
|
|
91261
91990
|
if self.enable_nat_traversal is not None:
|
|
91262
91991
|
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
91992
|
+
if self.enable_tunnels_bgp is not None:
|
|
91993
|
+
result['EnableTunnelsBgp'] = self.enable_tunnels_bgp
|
|
91263
91994
|
if self.health_check_config is not None:
|
|
91264
91995
|
result['HealthCheckConfig'] = self.health_check_config
|
|
91265
91996
|
if self.ike_config is not None:
|
|
@@ -91284,6 +92015,10 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
91284
92015
|
result['ResourceOwnerAccount'] = self.resource_owner_account
|
|
91285
92016
|
if self.resource_owner_id is not None:
|
|
91286
92017
|
result['ResourceOwnerId'] = self.resource_owner_id
|
|
92018
|
+
result['TunnelOptionsSpecification'] = []
|
|
92019
|
+
if self.tunnel_options_specification is not None:
|
|
92020
|
+
for k in self.tunnel_options_specification:
|
|
92021
|
+
result['TunnelOptionsSpecification'].append(k.to_map() if k else None)
|
|
91287
92022
|
if self.vpn_connection_id is not None:
|
|
91288
92023
|
result['VpnConnectionId'] = self.vpn_connection_id
|
|
91289
92024
|
return result
|
|
@@ -91304,6 +92039,8 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
91304
92039
|
self.enable_dpd = m.get('EnableDpd')
|
|
91305
92040
|
if m.get('EnableNatTraversal') is not None:
|
|
91306
92041
|
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
92042
|
+
if m.get('EnableTunnelsBgp') is not None:
|
|
92043
|
+
self.enable_tunnels_bgp = m.get('EnableTunnelsBgp')
|
|
91307
92044
|
if m.get('HealthCheckConfig') is not None:
|
|
91308
92045
|
self.health_check_config = m.get('HealthCheckConfig')
|
|
91309
92046
|
if m.get('IkeConfig') is not None:
|
|
@@ -91328,6 +92065,11 @@ class ModifyVpnAttachmentAttributeRequest(TeaModel):
|
|
|
91328
92065
|
self.resource_owner_account = m.get('ResourceOwnerAccount')
|
|
91329
92066
|
if m.get('ResourceOwnerId') is not None:
|
|
91330
92067
|
self.resource_owner_id = m.get('ResourceOwnerId')
|
|
92068
|
+
self.tunnel_options_specification = []
|
|
92069
|
+
if m.get('TunnelOptionsSpecification') is not None:
|
|
92070
|
+
for k in m.get('TunnelOptionsSpecification'):
|
|
92071
|
+
temp_model = ModifyVpnAttachmentAttributeRequestTunnelOptionsSpecification()
|
|
92072
|
+
self.tunnel_options_specification.append(temp_model.from_map(k))
|
|
91331
92073
|
if m.get('VpnConnectionId') is not None:
|
|
91332
92074
|
self.vpn_connection_id = m.get('VpnConnectionId')
|
|
91333
92075
|
return self
|
|
@@ -91468,6 +92210,272 @@ class ModifyVpnAttachmentAttributeResponseBodyIpsecConfig(TeaModel):
|
|
|
91468
92210
|
return self
|
|
91469
92211
|
|
|
91470
92212
|
|
|
92213
|
+
class ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelBgpConfig(TeaModel):
|
|
92214
|
+
def __init__(
|
|
92215
|
+
self,
|
|
92216
|
+
local_asn: int = None,
|
|
92217
|
+
local_bgp_ip: str = None,
|
|
92218
|
+
peer_asn: int = None,
|
|
92219
|
+
peer_bgp_ip: str = None,
|
|
92220
|
+
tunnel_cidr: str = None,
|
|
92221
|
+
):
|
|
92222
|
+
self.local_asn = local_asn
|
|
92223
|
+
self.local_bgp_ip = local_bgp_ip
|
|
92224
|
+
self.peer_asn = peer_asn
|
|
92225
|
+
self.peer_bgp_ip = peer_bgp_ip
|
|
92226
|
+
self.tunnel_cidr = tunnel_cidr
|
|
92227
|
+
|
|
92228
|
+
def validate(self):
|
|
92229
|
+
pass
|
|
92230
|
+
|
|
92231
|
+
def to_map(self):
|
|
92232
|
+
_map = super().to_map()
|
|
92233
|
+
if _map is not None:
|
|
92234
|
+
return _map
|
|
92235
|
+
|
|
92236
|
+
result = dict()
|
|
92237
|
+
if self.local_asn is not None:
|
|
92238
|
+
result['LocalAsn'] = self.local_asn
|
|
92239
|
+
if self.local_bgp_ip is not None:
|
|
92240
|
+
result['LocalBgpIp'] = self.local_bgp_ip
|
|
92241
|
+
if self.peer_asn is not None:
|
|
92242
|
+
result['PeerAsn'] = self.peer_asn
|
|
92243
|
+
if self.peer_bgp_ip is not None:
|
|
92244
|
+
result['PeerBgpIp'] = self.peer_bgp_ip
|
|
92245
|
+
if self.tunnel_cidr is not None:
|
|
92246
|
+
result['TunnelCidr'] = self.tunnel_cidr
|
|
92247
|
+
return result
|
|
92248
|
+
|
|
92249
|
+
def from_map(self, m: dict = None):
|
|
92250
|
+
m = m or dict()
|
|
92251
|
+
if m.get('LocalAsn') is not None:
|
|
92252
|
+
self.local_asn = m.get('LocalAsn')
|
|
92253
|
+
if m.get('LocalBgpIp') is not None:
|
|
92254
|
+
self.local_bgp_ip = m.get('LocalBgpIp')
|
|
92255
|
+
if m.get('PeerAsn') is not None:
|
|
92256
|
+
self.peer_asn = m.get('PeerAsn')
|
|
92257
|
+
if m.get('PeerBgpIp') is not None:
|
|
92258
|
+
self.peer_bgp_ip = m.get('PeerBgpIp')
|
|
92259
|
+
if m.get('TunnelCidr') is not None:
|
|
92260
|
+
self.tunnel_cidr = m.get('TunnelCidr')
|
|
92261
|
+
return self
|
|
92262
|
+
|
|
92263
|
+
|
|
92264
|
+
class ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIkeConfig(TeaModel):
|
|
92265
|
+
def __init__(
|
|
92266
|
+
self,
|
|
92267
|
+
ike_auth_alg: str = None,
|
|
92268
|
+
ike_enc_alg: str = None,
|
|
92269
|
+
ike_lifetime: int = None,
|
|
92270
|
+
ike_mode: str = None,
|
|
92271
|
+
ike_pfs: str = None,
|
|
92272
|
+
ike_version: str = None,
|
|
92273
|
+
local_id: str = None,
|
|
92274
|
+
psk: str = None,
|
|
92275
|
+
remote_id: str = None,
|
|
92276
|
+
):
|
|
92277
|
+
self.ike_auth_alg = ike_auth_alg
|
|
92278
|
+
self.ike_enc_alg = ike_enc_alg
|
|
92279
|
+
self.ike_lifetime = ike_lifetime
|
|
92280
|
+
self.ike_mode = ike_mode
|
|
92281
|
+
self.ike_pfs = ike_pfs
|
|
92282
|
+
self.ike_version = ike_version
|
|
92283
|
+
self.local_id = local_id
|
|
92284
|
+
self.psk = psk
|
|
92285
|
+
self.remote_id = remote_id
|
|
92286
|
+
|
|
92287
|
+
def validate(self):
|
|
92288
|
+
pass
|
|
92289
|
+
|
|
92290
|
+
def to_map(self):
|
|
92291
|
+
_map = super().to_map()
|
|
92292
|
+
if _map is not None:
|
|
92293
|
+
return _map
|
|
92294
|
+
|
|
92295
|
+
result = dict()
|
|
92296
|
+
if self.ike_auth_alg is not None:
|
|
92297
|
+
result['IkeAuthAlg'] = self.ike_auth_alg
|
|
92298
|
+
if self.ike_enc_alg is not None:
|
|
92299
|
+
result['IkeEncAlg'] = self.ike_enc_alg
|
|
92300
|
+
if self.ike_lifetime is not None:
|
|
92301
|
+
result['IkeLifetime'] = self.ike_lifetime
|
|
92302
|
+
if self.ike_mode is not None:
|
|
92303
|
+
result['IkeMode'] = self.ike_mode
|
|
92304
|
+
if self.ike_pfs is not None:
|
|
92305
|
+
result['IkePfs'] = self.ike_pfs
|
|
92306
|
+
if self.ike_version is not None:
|
|
92307
|
+
result['IkeVersion'] = self.ike_version
|
|
92308
|
+
if self.local_id is not None:
|
|
92309
|
+
result['LocalId'] = self.local_id
|
|
92310
|
+
if self.psk is not None:
|
|
92311
|
+
result['Psk'] = self.psk
|
|
92312
|
+
if self.remote_id is not None:
|
|
92313
|
+
result['RemoteId'] = self.remote_id
|
|
92314
|
+
return result
|
|
92315
|
+
|
|
92316
|
+
def from_map(self, m: dict = None):
|
|
92317
|
+
m = m or dict()
|
|
92318
|
+
if m.get('IkeAuthAlg') is not None:
|
|
92319
|
+
self.ike_auth_alg = m.get('IkeAuthAlg')
|
|
92320
|
+
if m.get('IkeEncAlg') is not None:
|
|
92321
|
+
self.ike_enc_alg = m.get('IkeEncAlg')
|
|
92322
|
+
if m.get('IkeLifetime') is not None:
|
|
92323
|
+
self.ike_lifetime = m.get('IkeLifetime')
|
|
92324
|
+
if m.get('IkeMode') is not None:
|
|
92325
|
+
self.ike_mode = m.get('IkeMode')
|
|
92326
|
+
if m.get('IkePfs') is not None:
|
|
92327
|
+
self.ike_pfs = m.get('IkePfs')
|
|
92328
|
+
if m.get('IkeVersion') is not None:
|
|
92329
|
+
self.ike_version = m.get('IkeVersion')
|
|
92330
|
+
if m.get('LocalId') is not None:
|
|
92331
|
+
self.local_id = m.get('LocalId')
|
|
92332
|
+
if m.get('Psk') is not None:
|
|
92333
|
+
self.psk = m.get('Psk')
|
|
92334
|
+
if m.get('RemoteId') is not None:
|
|
92335
|
+
self.remote_id = m.get('RemoteId')
|
|
92336
|
+
return self
|
|
92337
|
+
|
|
92338
|
+
|
|
92339
|
+
class ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIpsecConfig(TeaModel):
|
|
92340
|
+
def __init__(
|
|
92341
|
+
self,
|
|
92342
|
+
ipsec_auth_alg: str = None,
|
|
92343
|
+
ipsec_enc_alg: str = None,
|
|
92344
|
+
ipsec_lifetime: int = None,
|
|
92345
|
+
ipsec_pfs: str = None,
|
|
92346
|
+
):
|
|
92347
|
+
self.ipsec_auth_alg = ipsec_auth_alg
|
|
92348
|
+
self.ipsec_enc_alg = ipsec_enc_alg
|
|
92349
|
+
self.ipsec_lifetime = ipsec_lifetime
|
|
92350
|
+
self.ipsec_pfs = ipsec_pfs
|
|
92351
|
+
|
|
92352
|
+
def validate(self):
|
|
92353
|
+
pass
|
|
92354
|
+
|
|
92355
|
+
def to_map(self):
|
|
92356
|
+
_map = super().to_map()
|
|
92357
|
+
if _map is not None:
|
|
92358
|
+
return _map
|
|
92359
|
+
|
|
92360
|
+
result = dict()
|
|
92361
|
+
if self.ipsec_auth_alg is not None:
|
|
92362
|
+
result['IpsecAuthAlg'] = self.ipsec_auth_alg
|
|
92363
|
+
if self.ipsec_enc_alg is not None:
|
|
92364
|
+
result['IpsecEncAlg'] = self.ipsec_enc_alg
|
|
92365
|
+
if self.ipsec_lifetime is not None:
|
|
92366
|
+
result['IpsecLifetime'] = self.ipsec_lifetime
|
|
92367
|
+
if self.ipsec_pfs is not None:
|
|
92368
|
+
result['IpsecPfs'] = self.ipsec_pfs
|
|
92369
|
+
return result
|
|
92370
|
+
|
|
92371
|
+
def from_map(self, m: dict = None):
|
|
92372
|
+
m = m or dict()
|
|
92373
|
+
if m.get('IpsecAuthAlg') is not None:
|
|
92374
|
+
self.ipsec_auth_alg = m.get('IpsecAuthAlg')
|
|
92375
|
+
if m.get('IpsecEncAlg') is not None:
|
|
92376
|
+
self.ipsec_enc_alg = m.get('IpsecEncAlg')
|
|
92377
|
+
if m.get('IpsecLifetime') is not None:
|
|
92378
|
+
self.ipsec_lifetime = m.get('IpsecLifetime')
|
|
92379
|
+
if m.get('IpsecPfs') is not None:
|
|
92380
|
+
self.ipsec_pfs = m.get('IpsecPfs')
|
|
92381
|
+
return self
|
|
92382
|
+
|
|
92383
|
+
|
|
92384
|
+
class ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecification(TeaModel):
|
|
92385
|
+
def __init__(
|
|
92386
|
+
self,
|
|
92387
|
+
customer_gateway_id: str = None,
|
|
92388
|
+
enable_dpd: bool = None,
|
|
92389
|
+
enable_nat_traversal: bool = None,
|
|
92390
|
+
internet_ip: str = None,
|
|
92391
|
+
role: str = None,
|
|
92392
|
+
state: str = None,
|
|
92393
|
+
tunnel_bgp_config: ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelBgpConfig = None,
|
|
92394
|
+
tunnel_id: str = None,
|
|
92395
|
+
tunnel_ike_config: ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
92396
|
+
tunnel_index: int = None,
|
|
92397
|
+
tunnel_ipsec_config: ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
92398
|
+
):
|
|
92399
|
+
self.customer_gateway_id = customer_gateway_id
|
|
92400
|
+
self.enable_dpd = enable_dpd
|
|
92401
|
+
self.enable_nat_traversal = enable_nat_traversal
|
|
92402
|
+
self.internet_ip = internet_ip
|
|
92403
|
+
self.role = role
|
|
92404
|
+
self.state = state
|
|
92405
|
+
self.tunnel_bgp_config = tunnel_bgp_config
|
|
92406
|
+
self.tunnel_id = tunnel_id
|
|
92407
|
+
self.tunnel_ike_config = tunnel_ike_config
|
|
92408
|
+
self.tunnel_index = tunnel_index
|
|
92409
|
+
self.tunnel_ipsec_config = tunnel_ipsec_config
|
|
92410
|
+
|
|
92411
|
+
def validate(self):
|
|
92412
|
+
if self.tunnel_bgp_config:
|
|
92413
|
+
self.tunnel_bgp_config.validate()
|
|
92414
|
+
if self.tunnel_ike_config:
|
|
92415
|
+
self.tunnel_ike_config.validate()
|
|
92416
|
+
if self.tunnel_ipsec_config:
|
|
92417
|
+
self.tunnel_ipsec_config.validate()
|
|
92418
|
+
|
|
92419
|
+
def to_map(self):
|
|
92420
|
+
_map = super().to_map()
|
|
92421
|
+
if _map is not None:
|
|
92422
|
+
return _map
|
|
92423
|
+
|
|
92424
|
+
result = dict()
|
|
92425
|
+
if self.customer_gateway_id is not None:
|
|
92426
|
+
result['CustomerGatewayId'] = self.customer_gateway_id
|
|
92427
|
+
if self.enable_dpd is not None:
|
|
92428
|
+
result['EnableDpd'] = self.enable_dpd
|
|
92429
|
+
if self.enable_nat_traversal is not None:
|
|
92430
|
+
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
92431
|
+
if self.internet_ip is not None:
|
|
92432
|
+
result['InternetIp'] = self.internet_ip
|
|
92433
|
+
if self.role is not None:
|
|
92434
|
+
result['Role'] = self.role
|
|
92435
|
+
if self.state is not None:
|
|
92436
|
+
result['State'] = self.state
|
|
92437
|
+
if self.tunnel_bgp_config is not None:
|
|
92438
|
+
result['TunnelBgpConfig'] = self.tunnel_bgp_config.to_map()
|
|
92439
|
+
if self.tunnel_id is not None:
|
|
92440
|
+
result['TunnelId'] = self.tunnel_id
|
|
92441
|
+
if self.tunnel_ike_config is not None:
|
|
92442
|
+
result['TunnelIkeConfig'] = self.tunnel_ike_config.to_map()
|
|
92443
|
+
if self.tunnel_index is not None:
|
|
92444
|
+
result['TunnelIndex'] = self.tunnel_index
|
|
92445
|
+
if self.tunnel_ipsec_config is not None:
|
|
92446
|
+
result['TunnelIpsecConfig'] = self.tunnel_ipsec_config.to_map()
|
|
92447
|
+
return result
|
|
92448
|
+
|
|
92449
|
+
def from_map(self, m: dict = None):
|
|
92450
|
+
m = m or dict()
|
|
92451
|
+
if m.get('CustomerGatewayId') is not None:
|
|
92452
|
+
self.customer_gateway_id = m.get('CustomerGatewayId')
|
|
92453
|
+
if m.get('EnableDpd') is not None:
|
|
92454
|
+
self.enable_dpd = m.get('EnableDpd')
|
|
92455
|
+
if m.get('EnableNatTraversal') is not None:
|
|
92456
|
+
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
92457
|
+
if m.get('InternetIp') is not None:
|
|
92458
|
+
self.internet_ip = m.get('InternetIp')
|
|
92459
|
+
if m.get('Role') is not None:
|
|
92460
|
+
self.role = m.get('Role')
|
|
92461
|
+
if m.get('State') is not None:
|
|
92462
|
+
self.state = m.get('State')
|
|
92463
|
+
if m.get('TunnelBgpConfig') is not None:
|
|
92464
|
+
temp_model = ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelBgpConfig()
|
|
92465
|
+
self.tunnel_bgp_config = temp_model.from_map(m['TunnelBgpConfig'])
|
|
92466
|
+
if m.get('TunnelId') is not None:
|
|
92467
|
+
self.tunnel_id = m.get('TunnelId')
|
|
92468
|
+
if m.get('TunnelIkeConfig') is not None:
|
|
92469
|
+
temp_model = ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIkeConfig()
|
|
92470
|
+
self.tunnel_ike_config = temp_model.from_map(m['TunnelIkeConfig'])
|
|
92471
|
+
if m.get('TunnelIndex') is not None:
|
|
92472
|
+
self.tunnel_index = m.get('TunnelIndex')
|
|
92473
|
+
if m.get('TunnelIpsecConfig') is not None:
|
|
92474
|
+
temp_model = ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecificationTunnelIpsecConfig()
|
|
92475
|
+
self.tunnel_ipsec_config = temp_model.from_map(m['TunnelIpsecConfig'])
|
|
92476
|
+
return self
|
|
92477
|
+
|
|
92478
|
+
|
|
91471
92479
|
class ModifyVpnAttachmentAttributeResponseBodyVcoHealthCheck(TeaModel):
|
|
91472
92480
|
def __init__(
|
|
91473
92481
|
self,
|
|
@@ -91624,6 +92632,7 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91624
92632
|
effect_immediately: bool = None,
|
|
91625
92633
|
enable_dpd: bool = None,
|
|
91626
92634
|
enable_nat_traversal: bool = None,
|
|
92635
|
+
enable_tunnels_bgp: bool = None,
|
|
91627
92636
|
ike_config: ModifyVpnAttachmentAttributeResponseBodyIkeConfig = None,
|
|
91628
92637
|
ipsec_config: ModifyVpnAttachmentAttributeResponseBodyIpsecConfig = None,
|
|
91629
92638
|
local_subnet: str = None,
|
|
@@ -91634,6 +92643,7 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91634
92643
|
resource_group_id: str = None,
|
|
91635
92644
|
spec: str = None,
|
|
91636
92645
|
status: str = None,
|
|
92646
|
+
tunnel_options_specification: List[ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecification] = None,
|
|
91637
92647
|
vco_health_check: ModifyVpnAttachmentAttributeResponseBodyVcoHealthCheck = None,
|
|
91638
92648
|
vpn_bgp_config: ModifyVpnAttachmentAttributeResponseBodyVpnBgpConfig = None,
|
|
91639
92649
|
vpn_connection_id: str = None,
|
|
@@ -91670,6 +92680,7 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91670
92680
|
# * **true**\
|
|
91671
92681
|
# * **false**\
|
|
91672
92682
|
self.enable_nat_traversal = enable_nat_traversal
|
|
92683
|
+
self.enable_tunnels_bgp = enable_tunnels_bgp
|
|
91673
92684
|
# The configuration of Phase 1 negotiations.
|
|
91674
92685
|
self.ike_config = ike_config
|
|
91675
92686
|
# The configuration of Phase 2 negotiations.
|
|
@@ -91702,6 +92713,7 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91702
92713
|
# * **ipsec_sa_not_established**: Phase 2 negotiations failed.
|
|
91703
92714
|
# * **ipsec_sa_established**: Phase 2 negotiations succeeded.
|
|
91704
92715
|
self.status = status
|
|
92716
|
+
self.tunnel_options_specification = tunnel_options_specification
|
|
91705
92717
|
# The health check configuration of the IPsec-VPN connection.
|
|
91706
92718
|
self.vco_health_check = vco_health_check
|
|
91707
92719
|
# The BGP configuration of the IPsec-VPN connection.
|
|
@@ -91716,6 +92728,10 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91716
92728
|
self.ike_config.validate()
|
|
91717
92729
|
if self.ipsec_config:
|
|
91718
92730
|
self.ipsec_config.validate()
|
|
92731
|
+
if self.tunnel_options_specification:
|
|
92732
|
+
for k in self.tunnel_options_specification:
|
|
92733
|
+
if k:
|
|
92734
|
+
k.validate()
|
|
91719
92735
|
if self.vco_health_check:
|
|
91720
92736
|
self.vco_health_check.validate()
|
|
91721
92737
|
if self.vpn_bgp_config:
|
|
@@ -91743,6 +92759,8 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91743
92759
|
result['EnableDpd'] = self.enable_dpd
|
|
91744
92760
|
if self.enable_nat_traversal is not None:
|
|
91745
92761
|
result['EnableNatTraversal'] = self.enable_nat_traversal
|
|
92762
|
+
if self.enable_tunnels_bgp is not None:
|
|
92763
|
+
result['EnableTunnelsBgp'] = self.enable_tunnels_bgp
|
|
91746
92764
|
if self.ike_config is not None:
|
|
91747
92765
|
result['IkeConfig'] = self.ike_config.to_map()
|
|
91748
92766
|
if self.ipsec_config is not None:
|
|
@@ -91763,6 +92781,10 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91763
92781
|
result['Spec'] = self.spec
|
|
91764
92782
|
if self.status is not None:
|
|
91765
92783
|
result['Status'] = self.status
|
|
92784
|
+
result['TunnelOptionsSpecification'] = []
|
|
92785
|
+
if self.tunnel_options_specification is not None:
|
|
92786
|
+
for k in self.tunnel_options_specification:
|
|
92787
|
+
result['TunnelOptionsSpecification'].append(k.to_map() if k else None)
|
|
91766
92788
|
if self.vco_health_check is not None:
|
|
91767
92789
|
result['VcoHealthCheck'] = self.vco_health_check.to_map()
|
|
91768
92790
|
if self.vpn_bgp_config is not None:
|
|
@@ -91791,6 +92813,8 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91791
92813
|
self.enable_dpd = m.get('EnableDpd')
|
|
91792
92814
|
if m.get('EnableNatTraversal') is not None:
|
|
91793
92815
|
self.enable_nat_traversal = m.get('EnableNatTraversal')
|
|
92816
|
+
if m.get('EnableTunnelsBgp') is not None:
|
|
92817
|
+
self.enable_tunnels_bgp = m.get('EnableTunnelsBgp')
|
|
91794
92818
|
if m.get('IkeConfig') is not None:
|
|
91795
92819
|
temp_model = ModifyVpnAttachmentAttributeResponseBodyIkeConfig()
|
|
91796
92820
|
self.ike_config = temp_model.from_map(m['IkeConfig'])
|
|
@@ -91813,6 +92837,11 @@ class ModifyVpnAttachmentAttributeResponseBody(TeaModel):
|
|
|
91813
92837
|
self.spec = m.get('Spec')
|
|
91814
92838
|
if m.get('Status') is not None:
|
|
91815
92839
|
self.status = m.get('Status')
|
|
92840
|
+
self.tunnel_options_specification = []
|
|
92841
|
+
if m.get('TunnelOptionsSpecification') is not None:
|
|
92842
|
+
for k in m.get('TunnelOptionsSpecification'):
|
|
92843
|
+
temp_model = ModifyVpnAttachmentAttributeResponseBodyTunnelOptionsSpecification()
|
|
92844
|
+
self.tunnel_options_specification.append(temp_model.from_map(k))
|
|
91816
92845
|
if m.get('VcoHealthCheck') is not None:
|
|
91817
92846
|
temp_model = ModifyVpnAttachmentAttributeResponseBodyVcoHealthCheck()
|
|
91818
92847
|
self.vco_health_check = temp_model.from_map(m['VcoHealthCheck'])
|
|
@@ -91876,15 +92905,19 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelBgpConf
|
|
|
91876
92905
|
):
|
|
91877
92906
|
# The ASN of the tunnel on the Alibaba Cloud side. Valid values: **1** to **4294967295**. Default value: **45104**.
|
|
91878
92907
|
#
|
|
91879
|
-
# >
|
|
91880
|
-
#
|
|
91881
|
-
#
|
|
92908
|
+
# > You can specify this parameter only if **EnableTunnelsBgp** is set to **true**.
|
|
92909
|
+
#
|
|
92910
|
+
# * Before you add BGP configurations, we recommend that you learn about how BGP dynamic routing works and the limits. For more information, see [Configure BGP dynamic routing](https://help.aliyun.com/document_detail/2638220.html).
|
|
92911
|
+
#
|
|
92912
|
+
# * We recommend that you use a private ASN to establish BGP connections to Alibaba Cloud. For information about the range of private ASNs, see the relevant documentation.
|
|
91882
92913
|
self.local_asn = local_asn
|
|
91883
|
-
# The BGP IP address of the tunnel on the Alibaba Cloud side. The address is an IP address that falls within the BGP CIDR block
|
|
92914
|
+
# The BGP IP address of the tunnel on the Alibaba Cloud side. The address is an IP address that falls within the BGP CIDR block.
|
|
91884
92915
|
self.local_bgp_ip = local_bgp_ip
|
|
91885
|
-
# The BGP CIDR block of the tunnel.
|
|
92916
|
+
# The BGP CIDR block of the tunnel.
|
|
92917
|
+
#
|
|
92918
|
+
# The CIDR block must fall within 169.254.0.0/16 and the mask of the CIDR block must be 30 bits in length. The CIDR block cannot be 169.254.0.0/30, 169.254.1.0/30, 169.254.2.0/30, 169.254.3.0/30, 169.254.4.0/30, 169.254.5.0/30, 169.254.6.0/30, or 169.254.169.252/30.
|
|
91886
92919
|
#
|
|
91887
|
-
# > The BGP CIDR block of
|
|
92920
|
+
# > The BGP CIDR block of each tunnel must be unique on a VPN gateway.
|
|
91888
92921
|
self.tunnel_cidr = tunnel_cidr
|
|
91889
92922
|
|
|
91890
92923
|
def validate(self):
|
|
@@ -91936,33 +92969,33 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelIkeConf
|
|
|
91936
92969
|
#
|
|
91937
92970
|
# Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**.
|
|
91938
92971
|
self.ike_enc_alg = ike_enc_alg
|
|
91939
|
-
# The SA lifetime
|
|
92972
|
+
# The SA lifetime as a result of Phase 1 negotiations. Unit: seconds Valid values: **0** to **86400**.
|
|
91940
92973
|
self.ike_lifetime = ike_lifetime
|
|
91941
|
-
# The
|
|
92974
|
+
# The negotiation mode of IKE. Valid values:
|
|
91942
92975
|
#
|
|
91943
|
-
# * **main
|
|
91944
|
-
# * **aggressive
|
|
92976
|
+
# * **main:** This mode offers higher security during negotiations.
|
|
92977
|
+
# * **aggressive:** This mode supports faster negotiations and a higher success rate.
|
|
91945
92978
|
self.ike_mode = ike_mode
|
|
91946
|
-
# The
|
|
92979
|
+
# The Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**.
|
|
91947
92980
|
self.ike_pfs = ike_pfs
|
|
91948
92981
|
# The version of the IKE protocol. Valid values: **ikev1** and **ikev2**.
|
|
91949
92982
|
#
|
|
91950
|
-
# Compared with IKEv1, IKEv2 simplifies the
|
|
92983
|
+
# Compared with IKEv1, IKEv2 simplifies the SA negotiation process and provides better support for scenarios with multiple CIDR blocks.
|
|
91951
92984
|
self.ike_version = ike_version
|
|
91952
|
-
# The identifier on the Alibaba Cloud side, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length. The default
|
|
92985
|
+
# The identifier on the Alibaba Cloud side, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length and cannot contain space characters. The default value is the IP address of the tunnel.
|
|
91953
92986
|
#
|
|
91954
|
-
#
|
|
92987
|
+
# **LocalId** supports fully qualified domain names (FQDNs). If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.
|
|
91955
92988
|
self.local_id = local_id
|
|
91956
92989
|
# The pre-shared key, which is used for identity authentication between the tunnel and the tunnel peer.
|
|
91957
92990
|
#
|
|
91958
|
-
# * The key must be 1 to 100 characters in length and can contain digits, letters, and the following characters: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
91959
|
-
# * If you do not specify a pre-shared key, the system generates a
|
|
92991
|
+
# * The key cannot contain space characters. The key must be 1 to 100 characters in length, and can contain digits, letters, and the following special characters: ``~!\\`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
92992
|
+
# * If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnConnection](https://help.aliyun.com/document_detail/2526951.html) operation to query the pre-shared key that is automatically generated by the system.
|
|
91960
92993
|
#
|
|
91961
|
-
# > The tunnel and the tunnel peer must use the same pre-shared key. Otherwise, the tunnel cannot be
|
|
92994
|
+
# > The tunnel and the tunnel peer must use the same pre-shared key. Otherwise, the tunnel cannot be built.
|
|
91962
92995
|
self.psk = psk
|
|
91963
|
-
# The identifier of the tunnel peer, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length. The default
|
|
92996
|
+
# The identifier of the tunnel peer, which is used in Phase 1 negotiations. The identifier cannot exceed 100 characters in length and cannot contain space characters. The default value is the IP address of the customer gateway that is associated with the tunnel.
|
|
91964
92997
|
#
|
|
91965
|
-
#
|
|
92998
|
+
# **RemoteId** supports FQDNs. If you use an FQDN, we recommend that you set the negotiation mode to **aggressive**.
|
|
91966
92999
|
self.remote_id = remote_id
|
|
91967
93000
|
|
|
91968
93001
|
def validate(self):
|
|
@@ -92033,9 +93066,9 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelIpsecCo
|
|
|
92033
93066
|
#
|
|
92034
93067
|
# Valid values: **aes**, **aes192**, **aes256**, **des**, and **3des**.
|
|
92035
93068
|
self.ipsec_enc_alg = ipsec_enc_alg
|
|
92036
|
-
# The SA lifetime
|
|
93069
|
+
# The SA lifetime as a result of Phase 2 negotiations. Unit: seconds Valid values: **0** to **86400**.
|
|
92037
93070
|
self.ipsec_lifetime = ipsec_lifetime
|
|
92038
|
-
# The
|
|
93071
|
+
# The Diffie-Hellman key exchange algorithm that is used in Phase 2 negotiations.
|
|
92039
93072
|
#
|
|
92040
93073
|
# Valid values: **disabled**, **group1**, **group2**, **group5**, and **group14**.
|
|
92041
93074
|
self.ipsec_pfs = ipsec_pfs
|
|
@@ -92075,6 +93108,7 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelIpsecCo
|
|
|
92075
93108
|
class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
92076
93109
|
def __init__(
|
|
92077
93110
|
self,
|
|
93111
|
+
customer_gateway_id: str = None,
|
|
92078
93112
|
enable_dpd: bool = None,
|
|
92079
93113
|
enable_nat_traversal: bool = None,
|
|
92080
93114
|
remote_ca_certificate: str = None,
|
|
@@ -92084,15 +93118,17 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
92084
93118
|
tunnel_ike_config: ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelIkeConfig = None,
|
|
92085
93119
|
tunnel_ipsec_config: ModifyVpnConnectionAttributeRequestTunnelOptionsSpecificationTunnelIpsecConfig = None,
|
|
92086
93120
|
):
|
|
93121
|
+
# The ID of the customer gateway associated with the tunnel.
|
|
93122
|
+
self.customer_gateway_id = customer_gateway_id
|
|
92087
93123
|
# Specifies whether to enable the Dead Peer Detection (DPD) feature for the tunnel. Valid values:
|
|
92088
93124
|
#
|
|
92089
|
-
# * **true
|
|
92090
|
-
# * **false
|
|
93125
|
+
# * **true**: enables DPD. The initiator of the IPsec-VPN connection sends DPD packets to check the existence and availability of the peer. If no feedback is received from the peer within the specified period of time, the connection fails. In this case, ISAKMP SA and IPsec SA are deleted. The security tunnel is also deleted.
|
|
93126
|
+
# * **false**: disables DPD. The initiator of the IPsec-VPN connection does not send DPD packets.
|
|
92091
93127
|
self.enable_dpd = enable_dpd
|
|
92092
93128
|
# Specifies whether to enable NAT traversal for the tunnel. Valid values:
|
|
92093
93129
|
#
|
|
92094
|
-
# * **true
|
|
92095
|
-
# * **false
|
|
93130
|
+
# * **true**: enables NAT traversal. After NAT traversal is enabled, the initiator does not check the UDP ports during IKE negotiations and can automatically discover NAT gateway devices along the IPsec-VPN tunnel.
|
|
93131
|
+
# * **false**: disables NAT traversal.
|
|
92096
93132
|
self.enable_nat_traversal = enable_nat_traversal
|
|
92097
93133
|
# If the VPN gateway uses an SM certificate, you can modify the CA certificate used by the IPsec peer.
|
|
92098
93134
|
#
|
|
@@ -92105,8 +93141,6 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
92105
93141
|
self.role = role
|
|
92106
93142
|
# The Border Gateway Protocol (BGP) configurations of the tunnel.
|
|
92107
93143
|
self.tunnel_bgp_config = tunnel_bgp_config
|
|
92108
|
-
# **TunnelOptionsSpecification** parameters are supported by dual-tunnel IPsec-VPN gateways. You can modify both the active and standby tunnels of the IPsec-VPN connection.
|
|
92109
|
-
#
|
|
92110
93144
|
# The tunnel ID.
|
|
92111
93145
|
self.tunnel_id = tunnel_id
|
|
92112
93146
|
# The configurations of Phase 1 negotiations.
|
|
@@ -92128,6 +93162,8 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
92128
93162
|
return _map
|
|
92129
93163
|
|
|
92130
93164
|
result = dict()
|
|
93165
|
+
if self.customer_gateway_id is not None:
|
|
93166
|
+
result['CustomerGatewayId'] = self.customer_gateway_id
|
|
92131
93167
|
if self.enable_dpd is not None:
|
|
92132
93168
|
result['EnableDpd'] = self.enable_dpd
|
|
92133
93169
|
if self.enable_nat_traversal is not None:
|
|
@@ -92148,6 +93184,8 @@ class ModifyVpnConnectionAttributeRequestTunnelOptionsSpecification(TeaModel):
|
|
|
92148
93184
|
|
|
92149
93185
|
def from_map(self, m: dict = None):
|
|
92150
93186
|
m = m or dict()
|
|
93187
|
+
if m.get('CustomerGatewayId') is not None:
|
|
93188
|
+
self.customer_gateway_id = m.get('CustomerGatewayId')
|
|
92151
93189
|
if m.get('EnableDpd') is not None:
|
|
92152
93190
|
self.enable_dpd = m.get('EnableDpd')
|
|
92153
93191
|
if m.get('EnableNatTraversal') is not None:
|
|
@@ -92200,27 +93238,27 @@ class ModifyVpnConnectionAttributeRequest(TeaModel):
|
|
|
92200
93238
|
# * **true**\
|
|
92201
93239
|
# * **false**\
|
|
92202
93240
|
self.auto_config_route = auto_config_route
|
|
92203
|
-
# This parameter is supported
|
|
93241
|
+
# This parameter is supported if you modify the configurations of an IPsec-VPN connection in single-tunnel mode.
|
|
92204
93242
|
#
|
|
92205
|
-
#
|
|
93243
|
+
# BGP configuration:
|
|
92206
93244
|
#
|
|
92207
|
-
# * **BgpConfig.EnableBgp
|
|
93245
|
+
# * **BgpConfig.EnableBgp**: specifies whether to enable BGP. Valid values: **true** and **false**.
|
|
92208
93246
|
#
|
|
92209
93247
|
# * **BgpConfig.LocalAsn:** the autonomous system number (ASN) on the Alibaba Cloud side. Valid values: **1** to **4294967295**.
|
|
92210
93248
|
#
|
|
92211
|
-
# You can enter
|
|
93249
|
+
# You can enter a value in two segments separated by a period (.). Each segment is 16 bits in length. Enter the number in each segment in decimal format.
|
|
92212
93250
|
#
|
|
92213
|
-
# For example, if you enter 123.456, the ASN is: 123 × 65536 + 456 = 8061384.
|
|
93251
|
+
# For example, if you enter 123.456, the ASN is 8061384. The ASN is calculated by using the following formula: 123 × 65536 + 456 = 8061384.
|
|
92214
93252
|
#
|
|
92215
|
-
# * **BgpConfig.TunnelCidr**:
|
|
93253
|
+
# * **BgpConfig.TunnelCidr**: The CIDR block of the IPsec tunnel. The CIDR block must fall within 169.254.0.0/16 and the mask of the CIDR block must be 30 bits in length. The CIDR block cannot be 169.254.0.0/30, 169.254.1.0/30, 169.254.2.0/30, 169.254.3.0/30, 169.254.4.0/30, 169.254.5.0/30, 169.254.6.0/30, or 169.254.169.252/30.
|
|
92216
93254
|
#
|
|
92217
|
-
# > The CIDR block of the IPsec tunnel
|
|
93255
|
+
# > The CIDR block of the IPsec tunnel for each IPsec-VPN connection on a VPN gateway must be unique.
|
|
92218
93256
|
#
|
|
92219
|
-
# * **LocalBgpIp**: the BGP
|
|
93257
|
+
# * **LocalBgpIp**: the BGP address on the Alibaba Cloud side. It must be an IP address that falls within the CIDR block of the IPsec tunnel.
|
|
92220
93258
|
#
|
|
92221
93259
|
# > - This parameter is required when the VPN gateway has dynamic BGP enabled.
|
|
92222
|
-
# > - Before you
|
|
92223
|
-
# > - We recommend that you use a private ASN to establish
|
|
93260
|
+
# > - Before you add BGP configurations, we recommend that you learn about how BGP dynamic routing works and the limits. For more information, see [Configure BGP dynamic routing](https://help.aliyun.com/document_detail/2638220.html).
|
|
93261
|
+
# > - We recommend that you use a private ASN to establish BGP connections to Alibaba Cloud. For information about the range of private ASNs, see the relevant documentation.
|
|
92224
93262
|
self.bgp_config = bgp_config
|
|
92225
93263
|
# The client token that is used to ensure the idempotence of the request.
|
|
92226
93264
|
#
|
|
@@ -92261,25 +93299,27 @@ class ModifyVpnConnectionAttributeRequest(TeaModel):
|
|
|
92261
93299
|
# * **HealthCheckConfig.interval**: the interval between two consecutive health checks. Unit: seconds.
|
|
92262
93300
|
# * **HealthCheckConfig.retry**: the maximum number of health check retries.
|
|
92263
93301
|
self.health_check_config = health_check_config
|
|
92264
|
-
# This parameter is supported
|
|
93302
|
+
# This parameter is supported if you modify the configurations of an IPsec-VPN connection in single-tunnel mode.
|
|
92265
93303
|
#
|
|
92266
93304
|
# The configurations of Phase 1 negotiations:
|
|
92267
93305
|
#
|
|
92268
|
-
# * **IkeConfig.Psk**:
|
|
93306
|
+
# * **IkeConfig.Psk**: The pre-shared key that is used for identity authentication between the VPN gateway and the on-premises data center.
|
|
92269
93307
|
#
|
|
92270
|
-
# *
|
|
92271
|
-
# * If you do not specify a pre-shared key, the system generates a
|
|
93308
|
+
# * The key cannot contain space characters. The key must be 1 to 100 characters in length, and can contain digits, letters, and the following special characters: ``~!`@#$%^&*()_-+={}[]|;:\\",.<>/?``
|
|
93309
|
+
# * If you do not specify a pre-shared key, the system randomly generates a 16-bit string as the pre-shared key. You can call the [DescribeVpnConnection](https://help.aliyun.com/document_detail/2526951.html) operation to query the pre-shared key that is automatically generated by the system.
|
|
92272
93310
|
#
|
|
92273
|
-
#
|
|
93311
|
+
# **\
|
|
93312
|
+
#
|
|
93313
|
+
# **Description** The pre-shared key of the IPsec-VPN connection must be the same as the authentication key of the on-premises data center. Otherwise, connections between the on-premises data center and the VPN gateway cannot be established.
|
|
92274
93314
|
#
|
|
92275
93315
|
# * **IkeConfig.IkeVersion**: the version of the Internet Key Exchange (IKE) protocol. Valid values: **ikev1** and **ikev2**.
|
|
92276
93316
|
#
|
|
92277
|
-
# Compared with IKEv1, IKEv2 simplifies the security association (SA) negotiation process and
|
|
93317
|
+
# Compared with IKEv1, IKEv2 simplifies the security association (SA) negotiation process and provides better support for scenarios with multiple CIDR blocks.
|
|
92278
93318
|
#
|
|
92279
93319
|
# * **IkeConfig.IkeMode**: the negotiation mode of IKE. Valid values: **main** and **aggressive**.
|
|
92280
93320
|
#
|
|
92281
|
-
# * **main
|
|
92282
|
-
# * **aggressive
|
|
93321
|
+
# * **main:** This mode offers higher security during negotiations.
|
|
93322
|
+
# * **aggressive:** This mode supports faster negotiations and a higher success rate.
|
|
92283
93323
|
#
|
|
92284
93324
|
# * **IkeConfig.IkeEncAlg**: the encryption algorithm that is used in Phase 1 negotiations.
|
|
92285
93325
|
#
|
|
@@ -92289,13 +93329,13 @@ class ModifyVpnConnectionAttributeRequest(TeaModel):
|
|
|
92289
93329
|
#
|
|
92290
93330
|
# Valid values: **md5**, **sha1**, **sha256**, **sha384**, and **sha512**.
|
|
92291
93331
|
#
|
|
92292
|
-
# * **IkeConfig.IkePfs**: the Diffie-Hellman
|
|
93332
|
+
# * **IkeConfig.IkePfs**: the Diffie-Hellman key exchange algorithm that is used in Phase 1 negotiations. Valid values: **group1**, **group2**, **group5**, and **group14**.
|
|
92293
93333
|
#
|
|
92294
|
-
# * **IkeConfig.IkeLifetime**: the
|
|
93334
|
+
# * **IkeConfig.IkeLifetime**: the SA lifetime as a result of Phase 1 negotiations. Unit: seconds Valid values: **0 to 86400**.
|
|
92295
93335
|
#
|
|
92296
|
-
# * **IkeConfig.LocalId**: the identifier of the VPN gateway. The identifier cannot exceed 100 characters in length. The default value is the IP address of the VPN gateway.
|
|
93336
|
+
# * **IkeConfig.LocalId**: the identifier of the VPN gateway. The identifier cannot exceed 100 characters in length and cannot contain space characters. The default value is the IP address of the VPN gateway.
|
|
92297
93337
|
#
|
|
92298
|
-
# * **IkeConfig.RemoteId**: the identifier of the customer gateway. The identifier cannot exceed 100 characters in length. The default value is the IP address of the customer gateway.
|
|
93338
|
+
# * **IkeConfig.RemoteId**: the identifier of the customer gateway. The identifier cannot exceed 100 characters in length and cannot contain space characters. The default value is the IP address of the customer gateway.
|
|
92299
93339
|
self.ike_config = ike_config
|
|
92300
93340
|
# You can specify this parameter if you modify the configuration of a single-tunnel IPsec-VPN connection.
|
|
92301
93341
|
#
|
|
@@ -92353,7 +93393,7 @@ class ModifyVpnConnectionAttributeRequest(TeaModel):
|
|
|
92353
93393
|
self.resource_owner_id = resource_owner_id
|
|
92354
93394
|
# The tunnel configurations.
|
|
92355
93395
|
#
|
|
92356
|
-
# You can specify
|
|
93396
|
+
# You can specify parameters in the **TunnelOptionsSpecification** array when you modify the configurations of an IPsec-VPN connection in dual-tunnel mode. You can modify the configurations of both the active and standby tunnels of the IPsec-VPN connection.
|
|
92357
93397
|
self.tunnel_options_specification = tunnel_options_specification
|
|
92358
93398
|
# The ID of the IPsec-VPN connection.
|
|
92359
93399
|
#
|