فهرست منبع

VPC SDK Auto Released By jince,Version:1.58.10

Signed-off-by: sdk-team <sdk-team@alibabacloud.com>
sdk-team 6 سال پیش
والد
کامیت
a61afdc3d1
65فایلهای تغییر یافته به همراه3594 افزوده شده و 48 حذف شده
  1. 5 0
      ChangeLog.txt
  2. 124 0
      services/vpc/apply_physical_connection_loa.go
  3. 1 0
      services/vpc/associate_eip_address.go
  4. 114 0
      services/vpc/associate_network_acl.go
  5. 108 0
      services/vpc/cancel_common_bandwidth_package_ip_bandwidth.go
  6. 28 5
      services/vpc/client.go
  7. 110 0
      services/vpc/complete_physical_connection_loa.go
  8. 108 0
      services/vpc/copy_network_acl_entries.go
  9. 111 0
      services/vpc/create_network_acl.go
  10. 112 0
      services/vpc/create_physical_connection_occupancy_order.go
  11. 113 0
      services/vpc/create_physical_connection_setup_order.go
  12. 2 0
      services/vpc/create_vpn_connection.go
  13. 123 0
      services/vpc/create_vpn_pbr_route_entry.go
  14. 121 0
      services/vpc/create_vpn_route_entry.go
  15. 109 0
      services/vpc/delete_express_connect.go
  16. 107 0
      services/vpc/delete_network_acl.go
  17. 112 0
      services/vpc/delete_vpn_pbr_route_entry.go
  18. 111 0
      services/vpc/delete_vpn_route_entry.go
  19. 108 0
      services/vpc/describe_network_acl_attributes.go
  20. 117 0
      services/vpc/describe_network_acls.go
  21. 109 0
      services/vpc/describe_physical_connection_loa.go
  22. 9 8
      services/vpc/describe_physical_connections.go
  23. 1 0
      services/vpc/describe_v_switch_attributes.go
  24. 1 0
      services/vpc/describe_vpc_attribute.go
  25. 13 12
      services/vpc/describe_vpn_connection.go
  26. 1 0
      services/vpc/describe_vpn_gateway.go
  27. 113 0
      services/vpc/describe_vpn_pbr_route_entries.go
  28. 113 0
      services/vpc/describe_vpn_route_entries.go
  29. 109 0
      services/vpc/modify_common_bandwidth_package_ip_bandwidth.go
  30. 109 0
      services/vpc/modify_network_acl_attributes.go
  31. 15 12
      services/vpc/modify_vpn_connection_attribute.go
  32. 113 0
      services/vpc/modify_vpn_pbr_route_entry_weight.go
  33. 112 0
      services/vpc/modify_vpn_route_entry_weight.go
  34. 112 0
      services/vpc/publish_vpn_route_entry.go
  35. 21 0
      services/vpc/struct_egress_acl_entries_in_create_network_acl.go
  36. 21 0
      services/vpc/struct_egress_acl_entries_in_describe_network_acl_attributes.go
  37. 21 0
      services/vpc/struct_egress_acl_entries_in_describe_network_acls.go
  38. 28 0
      services/vpc/struct_egress_acl_entry.go
  39. 2 0
      services/vpc/struct_eip_address.go
  40. 21 0
      services/vpc/struct_ingress_acl_entries_in_create_network_acl.go
  41. 21 0
      services/vpc/struct_ingress_acl_entries_in_describe_network_acl_attributes.go
  42. 21 0
      services/vpc/struct_ingress_acl_entries_in_describe_network_acls.go
  43. 28 0
      services/vpc/struct_ingress_acl_entry.go
  44. 30 0
      services/vpc/struct_network_acl.go
  45. 30 0
      services/vpc/struct_network_acl_attribute.go
  46. 21 0
      services/vpc/struct_network_acls.go
  47. 31 0
      services/vpc/struct_physical_connection_loa_type.go
  48. 7 0
      services/vpc/struct_physical_connection_type.go
  49. 21 0
      services/vpc/struct_pm_info.go
  50. 25 0
      services/vpc/struct_pm_info_item.go
  51. 23 0
      services/vpc/struct_resource.go
  52. 21 0
      services/vpc/struct_resources_in_create_network_acl.go
  53. 21 0
      services/vpc/struct_resources_in_describe_network_acl_attributes.go
  54. 21 0
      services/vpc/struct_resources_in_describe_network_acls.go
  55. 1 0
      services/vpc/struct_v_switch.go
  56. 26 0
      services/vpc/struct_vco_health_check.go
  57. 1 0
      services/vpc/struct_vpc.go
  58. 12 11
      services/vpc/struct_vpn_connection.go
  59. 1 0
      services/vpc/struct_vpn_gateway.go
  60. 21 0
      services/vpc/struct_vpn_pbr_route_entries.go
  61. 27 0
      services/vpc/struct_vpn_pbr_route_entry.go
  62. 21 0
      services/vpc/struct_vpn_route_entries.go
  63. 26 0
      services/vpc/struct_vpn_route_entry.go
  64. 114 0
      services/vpc/unassociate_network_acl.go
  65. 135 0
      services/vpc/update_network_acl_entries.go

+ 5 - 0
ChangeLog.txt

@@ -1,3 +1,8 @@
+2019-05-13 Version: 1.58.10
+1, Add Vpc openapi interface,Support for new fields.
+2, Support for nacl openapi.
+3, Fixed some problems of the vpc openapi.
+
 2019-05-13 Version: 1.58.9
 1, Modify CreateRestoreTaskRequest DBS interface.
 

+ 124 - 0
services/vpc/apply_physical_connection_loa.go

@@ -0,0 +1,124 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ApplyPhysicalConnectionLOA invokes the vpc.ApplyPhysicalConnectionLOA API synchronously
+// api document: https://help.aliyun.com/api/vpc/applyphysicalconnectionloa.html
+func (client *Client) ApplyPhysicalConnectionLOA(request *ApplyPhysicalConnectionLOARequest) (response *ApplyPhysicalConnectionLOAResponse, err error) {
+	response = CreateApplyPhysicalConnectionLOAResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ApplyPhysicalConnectionLOAWithChan invokes the vpc.ApplyPhysicalConnectionLOA API asynchronously
+// api document: https://help.aliyun.com/api/vpc/applyphysicalconnectionloa.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ApplyPhysicalConnectionLOAWithChan(request *ApplyPhysicalConnectionLOARequest) (<-chan *ApplyPhysicalConnectionLOAResponse, <-chan error) {
+	responseChan := make(chan *ApplyPhysicalConnectionLOAResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ApplyPhysicalConnectionLOA(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ApplyPhysicalConnectionLOAWithCallback invokes the vpc.ApplyPhysicalConnectionLOA API asynchronously
+// api document: https://help.aliyun.com/api/vpc/applyphysicalconnectionloa.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ApplyPhysicalConnectionLOAWithCallback(request *ApplyPhysicalConnectionLOARequest, callback func(response *ApplyPhysicalConnectionLOAResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ApplyPhysicalConnectionLOAResponse
+		var err error
+		defer close(result)
+		response, err = client.ApplyPhysicalConnectionLOA(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ApplyPhysicalConnectionLOARequest is the request struct for api ApplyPhysicalConnectionLOA
+type ApplyPhysicalConnectionLOARequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer                    `position:"Query" name:"ResourceOwnerId"`
+	PeerLocation         string                              `position:"Query" name:"PeerLocation"`
+	ClientToken          string                              `position:"Query" name:"ClientToken"`
+	ResourceOwnerAccount string                              `position:"Query" name:"ResourceOwnerAccount"`
+	Bandwidth            requests.Integer                    `position:"Query" name:"Bandwidth"`
+	LineType             string                              `position:"Query" name:"LineType"`
+	OwnerAccount         string                              `position:"Query" name:"OwnerAccount"`
+	ConstructionTime     string                              `position:"Query" name:"ConstructionTime"`
+	OwnerId              requests.Integer                    `position:"Query" name:"OwnerId"`
+	InstanceId           string                              `position:"Query" name:"InstanceId"`
+	CompanyName          string                              `position:"Query" name:"CompanyName"`
+	Si                   string                              `position:"Query" name:"Si"`
+	PMInfo               *[]ApplyPhysicalConnectionLOAPMInfo `position:"Query" name:"PMInfo"  type:"Repeated"`
+}
+
+// ApplyPhysicalConnectionLOAPMInfo is a repeated param struct in ApplyPhysicalConnectionLOARequest
+type ApplyPhysicalConnectionLOAPMInfo struct {
+	PMCertificateNo   string `name:"PMCertificateNo"`
+	PMName            string `name:"PMName"`
+	PMCertificateType string `name:"PMCertificateType"`
+	PMContactInfo     string `name:"PMContactInfo"`
+	PMGender          string `name:"PMGender"`
+}
+
+// ApplyPhysicalConnectionLOAResponse is the response struct for api ApplyPhysicalConnectionLOA
+type ApplyPhysicalConnectionLOAResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateApplyPhysicalConnectionLOARequest creates a request to invoke ApplyPhysicalConnectionLOA API
+func CreateApplyPhysicalConnectionLOARequest() (request *ApplyPhysicalConnectionLOARequest) {
+	request = &ApplyPhysicalConnectionLOARequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "ApplyPhysicalConnectionLOA", "vpc", "openAPI")
+	return
+}
+
+// CreateApplyPhysicalConnectionLOAResponse creates a response to parse from ApplyPhysicalConnectionLOA response
+func CreateApplyPhysicalConnectionLOAResponse() (response *ApplyPhysicalConnectionLOAResponse) {
+	response = &ApplyPhysicalConnectionLOAResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 1 - 0
services/vpc/associate_eip_address.go

@@ -77,6 +77,7 @@ func (client *Client) AssociateEipAddressWithCallback(request *AssociateEipAddre
 type AssociateEipAddressRequest struct {
 	*requests.RpcRequest
 	PrivateIpAddress     string           `position:"Query" name:"PrivateIpAddress"`
+	Mode                 string           `position:"Query" name:"Mode"`
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	InstanceId           string           `position:"Query" name:"InstanceId"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`

+ 114 - 0
services/vpc/associate_network_acl.go

@@ -0,0 +1,114 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// AssociateNetworkAcl invokes the vpc.AssociateNetworkAcl API synchronously
+// api document: https://help.aliyun.com/api/vpc/associatenetworkacl.html
+func (client *Client) AssociateNetworkAcl(request *AssociateNetworkAclRequest) (response *AssociateNetworkAclResponse, err error) {
+	response = CreateAssociateNetworkAclResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// AssociateNetworkAclWithChan invokes the vpc.AssociateNetworkAcl API asynchronously
+// api document: https://help.aliyun.com/api/vpc/associatenetworkacl.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AssociateNetworkAclWithChan(request *AssociateNetworkAclRequest) (<-chan *AssociateNetworkAclResponse, <-chan error) {
+	responseChan := make(chan *AssociateNetworkAclResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AssociateNetworkAcl(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// AssociateNetworkAclWithCallback invokes the vpc.AssociateNetworkAcl API asynchronously
+// api document: https://help.aliyun.com/api/vpc/associatenetworkacl.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) AssociateNetworkAclWithCallback(request *AssociateNetworkAclRequest, callback func(response *AssociateNetworkAclResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AssociateNetworkAclResponse
+		var err error
+		defer close(result)
+		response, err = client.AssociateNetworkAcl(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// AssociateNetworkAclRequest is the request struct for api AssociateNetworkAcl
+type AssociateNetworkAclRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer               `position:"Query" name:"ResourceOwnerId"`
+	ClientToken          string                         `position:"Query" name:"ClientToken"`
+	NetworkAclId         string                         `position:"Query" name:"NetworkAclId"`
+	Resource             *[]AssociateNetworkAclResource `position:"Query" name:"Resource"  type:"Repeated"`
+	ResourceOwnerAccount string                         `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerId              requests.Integer               `position:"Query" name:"OwnerId"`
+}
+
+// AssociateNetworkAclResource is a repeated param struct in AssociateNetworkAclRequest
+type AssociateNetworkAclResource struct {
+	ResourceType string `name:"ResourceType"`
+	ResourceId   string `name:"ResourceId"`
+}
+
+// AssociateNetworkAclResponse is the response struct for api AssociateNetworkAcl
+type AssociateNetworkAclResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateAssociateNetworkAclRequest creates a request to invoke AssociateNetworkAcl API
+func CreateAssociateNetworkAclRequest() (request *AssociateNetworkAclRequest) {
+	request = &AssociateNetworkAclRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "AssociateNetworkAcl", "vpc", "openAPI")
+	return
+}
+
+// CreateAssociateNetworkAclResponse creates a response to parse from AssociateNetworkAcl response
+func CreateAssociateNetworkAclResponse() (response *AssociateNetworkAclResponse) {
+	response = &AssociateNetworkAclResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/vpc/cancel_common_bandwidth_package_ip_bandwidth.go

@@ -0,0 +1,108 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CancelCommonBandwidthPackageIpBandwidth invokes the vpc.CancelCommonBandwidthPackageIpBandwidth API synchronously
+// api document: https://help.aliyun.com/api/vpc/cancelcommonbandwidthpackageipbandwidth.html
+func (client *Client) CancelCommonBandwidthPackageIpBandwidth(request *CancelCommonBandwidthPackageIpBandwidthRequest) (response *CancelCommonBandwidthPackageIpBandwidthResponse, err error) {
+	response = CreateCancelCommonBandwidthPackageIpBandwidthResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CancelCommonBandwidthPackageIpBandwidthWithChan invokes the vpc.CancelCommonBandwidthPackageIpBandwidth API asynchronously
+// api document: https://help.aliyun.com/api/vpc/cancelcommonbandwidthpackageipbandwidth.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CancelCommonBandwidthPackageIpBandwidthWithChan(request *CancelCommonBandwidthPackageIpBandwidthRequest) (<-chan *CancelCommonBandwidthPackageIpBandwidthResponse, <-chan error) {
+	responseChan := make(chan *CancelCommonBandwidthPackageIpBandwidthResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CancelCommonBandwidthPackageIpBandwidth(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CancelCommonBandwidthPackageIpBandwidthWithCallback invokes the vpc.CancelCommonBandwidthPackageIpBandwidth API asynchronously
+// api document: https://help.aliyun.com/api/vpc/cancelcommonbandwidthpackageipbandwidth.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CancelCommonBandwidthPackageIpBandwidthWithCallback(request *CancelCommonBandwidthPackageIpBandwidthRequest, callback func(response *CancelCommonBandwidthPackageIpBandwidthResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CancelCommonBandwidthPackageIpBandwidthResponse
+		var err error
+		defer close(result)
+		response, err = client.CancelCommonBandwidthPackageIpBandwidth(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CancelCommonBandwidthPackageIpBandwidthRequest is the request struct for api CancelCommonBandwidthPackageIpBandwidth
+type CancelCommonBandwidthPackageIpBandwidthRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	BandwidthPackageId   string           `position:"Query" name:"BandwidthPackageId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	EipId                string           `position:"Query" name:"EipId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// CancelCommonBandwidthPackageIpBandwidthResponse is the response struct for api CancelCommonBandwidthPackageIpBandwidth
+type CancelCommonBandwidthPackageIpBandwidthResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateCancelCommonBandwidthPackageIpBandwidthRequest creates a request to invoke CancelCommonBandwidthPackageIpBandwidth API
+func CreateCancelCommonBandwidthPackageIpBandwidthRequest() (request *CancelCommonBandwidthPackageIpBandwidthRequest) {
+	request = &CancelCommonBandwidthPackageIpBandwidthRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "CancelCommonBandwidthPackageIpBandwidth", "vpc", "openAPI")
+	return
+}
+
+// CreateCancelCommonBandwidthPackageIpBandwidthResponse creates a response to parse from CancelCommonBandwidthPackageIpBandwidth response
+func CreateCancelCommonBandwidthPackageIpBandwidthResponse() (response *CancelCommonBandwidthPackageIpBandwidthResponse) {
+	response = &CancelCommonBandwidthPackageIpBandwidthResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 28 - 5
services/vpc/client.go

@@ -18,6 +18,7 @@ package vpc
 import (
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
 	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials/provider"
 )
 
 // Client is the sdk client struct, each func corresponds to an OpenAPI
@@ -32,6 +33,20 @@ func NewClient() (client *Client, err error) {
 	return
 }
 
+// NewClientWithProvider creates a sdk client with providers
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithProvider(regionId string, providers ...provider.Provider) (client *Client, err error) {
+	client = &Client{}
+	var pc provider.Provider
+	if len(providers) == 0 {
+		pc = provider.DefaultChain
+	} else {
+		pc = provider.NewProviderChain(providers)
+	}
+	err = client.InitWithProviderChain(regionId, pc)
+	return
+}
+
 // NewClientWithOptions creates a sdk client with regionId/sdkConfig/credential
 // this is the common api to create a sdk client
 func NewClientWithOptions(regionId string, config *sdk.Config, credential auth.Credential) (client *Client, err error) {
@@ -41,7 +56,7 @@ func NewClientWithOptions(regionId string, config *sdk.Config, credential auth.C
 }
 
 // NewClientWithAccessKey is a shortcut to create sdk client with accesskey
-// usage: https://help.aliyun.com/document_detail/66217.html
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
 func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (client *Client, err error) {
 	client = &Client{}
 	err = client.InitWithAccessKey(regionId, accessKeyId, accessKeySecret)
@@ -49,7 +64,7 @@ func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (clie
 }
 
 // NewClientWithStsToken is a shortcut to create sdk client with sts token
-// usage: https://help.aliyun.com/document_detail/66222.html
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
 func NewClientWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken string) (client *Client, err error) {
 	client = &Client{}
 	err = client.InitWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToken)
@@ -57,15 +72,23 @@ func NewClientWithStsToken(regionId, stsAccessKeyId, stsAccessKeySecret, stsToke
 }
 
 // NewClientWithRamRoleArn is a shortcut to create sdk client with ram roleArn
-// usage: https://help.aliyun.com/document_detail/66222.html
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
 func NewClientWithRamRoleArn(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName string) (client *Client, err error) {
 	client = &Client{}
 	err = client.InitWithRamRoleArn(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName)
 	return
 }
 
+// NewClientWithRamRoleArn is a shortcut to create sdk client with ram roleArn and policy
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
+func NewClientWithRamRoleArnAndPolicy(regionId string, accessKeyId, accessKeySecret, roleArn, roleSessionName, policy string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithRamRoleArnAndPolicy(regionId, accessKeyId, accessKeySecret, roleArn, roleSessionName, policy)
+	return
+}
+
 // NewClientWithEcsRamRole is a shortcut to create sdk client with ecs ram role
-// usage: https://help.aliyun.com/document_detail/66223.html
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
 func NewClientWithEcsRamRole(regionId string, roleName string) (client *Client, err error) {
 	client = &Client{}
 	err = client.InitWithEcsRamRole(regionId, roleName)
@@ -73,7 +96,7 @@ func NewClientWithEcsRamRole(regionId string, roleName string) (client *Client,
 }
 
 // NewClientWithRsaKeyPair is a shortcut to create sdk client with rsa key pair
-// attention: rsa key pair auth is only Japan regions available
+// usage: https://github.com/aliyun/alibaba-cloud-sdk-go/blob/master/docs/2-Client-EN.md
 func NewClientWithRsaKeyPair(regionId string, publicKeyId, privateKey string, sessionExpiration int) (client *Client, err error) {
 	client = &Client{}
 	err = client.InitWithRsaKeyPair(regionId, publicKeyId, privateKey, sessionExpiration)

+ 110 - 0
services/vpc/complete_physical_connection_loa.go

@@ -0,0 +1,110 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CompletePhysicalConnectionLOA invokes the vpc.CompletePhysicalConnectionLOA API synchronously
+// api document: https://help.aliyun.com/api/vpc/completephysicalconnectionloa.html
+func (client *Client) CompletePhysicalConnectionLOA(request *CompletePhysicalConnectionLOARequest) (response *CompletePhysicalConnectionLOAResponse, err error) {
+	response = CreateCompletePhysicalConnectionLOAResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CompletePhysicalConnectionLOAWithChan invokes the vpc.CompletePhysicalConnectionLOA API asynchronously
+// api document: https://help.aliyun.com/api/vpc/completephysicalconnectionloa.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CompletePhysicalConnectionLOAWithChan(request *CompletePhysicalConnectionLOARequest) (<-chan *CompletePhysicalConnectionLOAResponse, <-chan error) {
+	responseChan := make(chan *CompletePhysicalConnectionLOAResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CompletePhysicalConnectionLOA(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CompletePhysicalConnectionLOAWithCallback invokes the vpc.CompletePhysicalConnectionLOA API asynchronously
+// api document: https://help.aliyun.com/api/vpc/completephysicalconnectionloa.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CompletePhysicalConnectionLOAWithCallback(request *CompletePhysicalConnectionLOARequest, callback func(response *CompletePhysicalConnectionLOAResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CompletePhysicalConnectionLOAResponse
+		var err error
+		defer close(result)
+		response, err = client.CompletePhysicalConnectionLOA(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CompletePhysicalConnectionLOARequest is the request struct for api CompletePhysicalConnectionLOA
+type CompletePhysicalConnectionLOARequest struct {
+	*requests.RpcRequest
+	LineLabel            string           `position:"Query" name:"LineLabel"`
+	LineCode             string           `position:"Query" name:"LineCode"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	InstanceId           string           `position:"Query" name:"InstanceId"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// CompletePhysicalConnectionLOAResponse is the response struct for api CompletePhysicalConnectionLOA
+type CompletePhysicalConnectionLOAResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateCompletePhysicalConnectionLOARequest creates a request to invoke CompletePhysicalConnectionLOA API
+func CreateCompletePhysicalConnectionLOARequest() (request *CompletePhysicalConnectionLOARequest) {
+	request = &CompletePhysicalConnectionLOARequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "CompletePhysicalConnectionLOA", "vpc", "openAPI")
+	return
+}
+
+// CreateCompletePhysicalConnectionLOAResponse creates a response to parse from CompletePhysicalConnectionLOA response
+func CreateCompletePhysicalConnectionLOAResponse() (response *CompletePhysicalConnectionLOAResponse) {
+	response = &CompletePhysicalConnectionLOAResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/vpc/copy_network_acl_entries.go

@@ -0,0 +1,108 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CopyNetworkAclEntries invokes the vpc.CopyNetworkAclEntries API synchronously
+// api document: https://help.aliyun.com/api/vpc/copynetworkaclentries.html
+func (client *Client) CopyNetworkAclEntries(request *CopyNetworkAclEntriesRequest) (response *CopyNetworkAclEntriesResponse, err error) {
+	response = CreateCopyNetworkAclEntriesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CopyNetworkAclEntriesWithChan invokes the vpc.CopyNetworkAclEntries API asynchronously
+// api document: https://help.aliyun.com/api/vpc/copynetworkaclentries.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CopyNetworkAclEntriesWithChan(request *CopyNetworkAclEntriesRequest) (<-chan *CopyNetworkAclEntriesResponse, <-chan error) {
+	responseChan := make(chan *CopyNetworkAclEntriesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CopyNetworkAclEntries(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CopyNetworkAclEntriesWithCallback invokes the vpc.CopyNetworkAclEntries API asynchronously
+// api document: https://help.aliyun.com/api/vpc/copynetworkaclentries.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CopyNetworkAclEntriesWithCallback(request *CopyNetworkAclEntriesRequest, callback func(response *CopyNetworkAclEntriesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CopyNetworkAclEntriesResponse
+		var err error
+		defer close(result)
+		response, err = client.CopyNetworkAclEntries(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CopyNetworkAclEntriesRequest is the request struct for api CopyNetworkAclEntries
+type CopyNetworkAclEntriesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	NetworkAclId         string           `position:"Query" name:"NetworkAclId"`
+	SourceNetworkAclId   string           `position:"Query" name:"SourceNetworkAclId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// CopyNetworkAclEntriesResponse is the response struct for api CopyNetworkAclEntries
+type CopyNetworkAclEntriesResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateCopyNetworkAclEntriesRequest creates a request to invoke CopyNetworkAclEntries API
+func CreateCopyNetworkAclEntriesRequest() (request *CopyNetworkAclEntriesRequest) {
+	request = &CopyNetworkAclEntriesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "CopyNetworkAclEntries", "vpc", "openAPI")
+	return
+}
+
+// CreateCopyNetworkAclEntriesResponse creates a response to parse from CopyNetworkAclEntries response
+func CreateCopyNetworkAclEntriesResponse() (response *CopyNetworkAclEntriesResponse) {
+	response = &CopyNetworkAclEntriesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/vpc/create_network_acl.go

@@ -0,0 +1,111 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateNetworkAcl invokes the vpc.CreateNetworkAcl API synchronously
+// api document: https://help.aliyun.com/api/vpc/createnetworkacl.html
+func (client *Client) CreateNetworkAcl(request *CreateNetworkAclRequest) (response *CreateNetworkAclResponse, err error) {
+	response = CreateCreateNetworkAclResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateNetworkAclWithChan invokes the vpc.CreateNetworkAcl API asynchronously
+// api document: https://help.aliyun.com/api/vpc/createnetworkacl.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateNetworkAclWithChan(request *CreateNetworkAclRequest) (<-chan *CreateNetworkAclResponse, <-chan error) {
+	responseChan := make(chan *CreateNetworkAclResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateNetworkAcl(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateNetworkAclWithCallback invokes the vpc.CreateNetworkAcl API asynchronously
+// api document: https://help.aliyun.com/api/vpc/createnetworkacl.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateNetworkAclWithCallback(request *CreateNetworkAclRequest, callback func(response *CreateNetworkAclResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateNetworkAclResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateNetworkAcl(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateNetworkAclRequest is the request struct for api CreateNetworkAcl
+type CreateNetworkAclRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	Description          string           `position:"Query" name:"Description"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	NetworkAclName       string           `position:"Query" name:"NetworkAclName"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	VpcId                string           `position:"Query" name:"VpcId"`
+}
+
+// CreateNetworkAclResponse is the response struct for api CreateNetworkAcl
+type CreateNetworkAclResponse struct {
+	*responses.BaseResponse
+	RequestId           string              `json:"RequestId" xml:"RequestId"`
+	NetworkAclId        string              `json:"NetworkAclId" xml:"NetworkAclId"`
+	NetworkAclAttribute NetworkAclAttribute `json:"NetworkAclAttribute" xml:"NetworkAclAttribute"`
+}
+
+// CreateCreateNetworkAclRequest creates a request to invoke CreateNetworkAcl API
+func CreateCreateNetworkAclRequest() (request *CreateNetworkAclRequest) {
+	request = &CreateNetworkAclRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "CreateNetworkAcl", "vpc", "openAPI")
+	return
+}
+
+// CreateCreateNetworkAclResponse creates a response to parse from CreateNetworkAcl response
+func CreateCreateNetworkAclResponse() (response *CreateNetworkAclResponse) {
+	response = &CreateNetworkAclResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/vpc/create_physical_connection_occupancy_order.go

@@ -0,0 +1,112 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreatePhysicalConnectionOccupancyOrder invokes the vpc.CreatePhysicalConnectionOccupancyOrder API synchronously
+// api document: https://help.aliyun.com/api/vpc/createphysicalconnectionoccupancyorder.html
+func (client *Client) CreatePhysicalConnectionOccupancyOrder(request *CreatePhysicalConnectionOccupancyOrderRequest) (response *CreatePhysicalConnectionOccupancyOrderResponse, err error) {
+	response = CreateCreatePhysicalConnectionOccupancyOrderResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreatePhysicalConnectionOccupancyOrderWithChan invokes the vpc.CreatePhysicalConnectionOccupancyOrder API asynchronously
+// api document: https://help.aliyun.com/api/vpc/createphysicalconnectionoccupancyorder.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreatePhysicalConnectionOccupancyOrderWithChan(request *CreatePhysicalConnectionOccupancyOrderRequest) (<-chan *CreatePhysicalConnectionOccupancyOrderResponse, <-chan error) {
+	responseChan := make(chan *CreatePhysicalConnectionOccupancyOrderResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreatePhysicalConnectionOccupancyOrder(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreatePhysicalConnectionOccupancyOrderWithCallback invokes the vpc.CreatePhysicalConnectionOccupancyOrder API asynchronously
+// api document: https://help.aliyun.com/api/vpc/createphysicalconnectionoccupancyorder.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreatePhysicalConnectionOccupancyOrderWithCallback(request *CreatePhysicalConnectionOccupancyOrderRequest, callback func(response *CreatePhysicalConnectionOccupancyOrderResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreatePhysicalConnectionOccupancyOrderResponse
+		var err error
+		defer close(result)
+		response, err = client.CreatePhysicalConnectionOccupancyOrder(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreatePhysicalConnectionOccupancyOrderRequest is the request struct for api CreatePhysicalConnectionOccupancyOrder
+type CreatePhysicalConnectionOccupancyOrderRequest struct {
+	*requests.RpcRequest
+	Period               requests.Integer `position:"Query" name:"Period"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	AutoPay              requests.Boolean `position:"Query" name:"AutoPay"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	PhysicalConnectionId string           `position:"Query" name:"PhysicalConnectionId"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	InstanceChargeType   string           `position:"Query" name:"InstanceChargeType"`
+	PricingCycle         string           `position:"Query" name:"PricingCycle"`
+}
+
+// CreatePhysicalConnectionOccupancyOrderResponse is the response struct for api CreatePhysicalConnectionOccupancyOrder
+type CreatePhysicalConnectionOccupancyOrderResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateCreatePhysicalConnectionOccupancyOrderRequest creates a request to invoke CreatePhysicalConnectionOccupancyOrder API
+func CreateCreatePhysicalConnectionOccupancyOrderRequest() (request *CreatePhysicalConnectionOccupancyOrderRequest) {
+	request = &CreatePhysicalConnectionOccupancyOrderRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "CreatePhysicalConnectionOccupancyOrder", "vpc", "openAPI")
+	return
+}
+
+// CreateCreatePhysicalConnectionOccupancyOrderResponse creates a response to parse from CreatePhysicalConnectionOccupancyOrder response
+func CreateCreatePhysicalConnectionOccupancyOrderResponse() (response *CreatePhysicalConnectionOccupancyOrderResponse) {
+	response = &CreatePhysicalConnectionOccupancyOrderResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/vpc/create_physical_connection_setup_order.go

@@ -0,0 +1,113 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreatePhysicalConnectionSetupOrder invokes the vpc.CreatePhysicalConnectionSetupOrder API synchronously
+// api document: https://help.aliyun.com/api/vpc/createphysicalconnectionsetuporder.html
+func (client *Client) CreatePhysicalConnectionSetupOrder(request *CreatePhysicalConnectionSetupOrderRequest) (response *CreatePhysicalConnectionSetupOrderResponse, err error) {
+	response = CreateCreatePhysicalConnectionSetupOrderResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreatePhysicalConnectionSetupOrderWithChan invokes the vpc.CreatePhysicalConnectionSetupOrder API asynchronously
+// api document: https://help.aliyun.com/api/vpc/createphysicalconnectionsetuporder.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreatePhysicalConnectionSetupOrderWithChan(request *CreatePhysicalConnectionSetupOrderRequest) (<-chan *CreatePhysicalConnectionSetupOrderResponse, <-chan error) {
+	responseChan := make(chan *CreatePhysicalConnectionSetupOrderResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreatePhysicalConnectionSetupOrder(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreatePhysicalConnectionSetupOrderWithCallback invokes the vpc.CreatePhysicalConnectionSetupOrder API asynchronously
+// api document: https://help.aliyun.com/api/vpc/createphysicalconnectionsetuporder.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreatePhysicalConnectionSetupOrderWithCallback(request *CreatePhysicalConnectionSetupOrderRequest, callback func(response *CreatePhysicalConnectionSetupOrderResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreatePhysicalConnectionSetupOrderResponse
+		var err error
+		defer close(result)
+		response, err = client.CreatePhysicalConnectionSetupOrder(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreatePhysicalConnectionSetupOrderRequest is the request struct for api CreatePhysicalConnectionSetupOrder
+type CreatePhysicalConnectionSetupOrderRequest struct {
+	*requests.RpcRequest
+	AccessPointId                 string           `position:"Query" name:"AccessPointId"`
+	RedundantPhysicalConnectionId string           `position:"Query" name:"RedundantPhysicalConnectionId"`
+	ResourceOwnerId               requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PortType                      string           `position:"Query" name:"PortType"`
+	AutoPay                       requests.Boolean `position:"Query" name:"AutoPay"`
+	ClientToken                   string           `position:"Query" name:"ClientToken"`
+	ResourceOwnerAccount          string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount                  string           `position:"Query" name:"OwnerAccount"`
+	OwnerId                       requests.Integer `position:"Query" name:"OwnerId"`
+	LineOperator                  string           `position:"Query" name:"LineOperator"`
+}
+
+// CreatePhysicalConnectionSetupOrderResponse is the response struct for api CreatePhysicalConnectionSetupOrder
+type CreatePhysicalConnectionSetupOrderResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	OrderId   string `json:"OrderId" xml:"OrderId"`
+}
+
+// CreateCreatePhysicalConnectionSetupOrderRequest creates a request to invoke CreatePhysicalConnectionSetupOrder API
+func CreateCreatePhysicalConnectionSetupOrderRequest() (request *CreatePhysicalConnectionSetupOrderRequest) {
+	request = &CreatePhysicalConnectionSetupOrderRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "CreatePhysicalConnectionSetupOrder", "vpc", "openAPI")
+	return
+}
+
+// CreateCreatePhysicalConnectionSetupOrderResponse creates a response to parse from CreatePhysicalConnectionSetupOrder response
+func CreateCreatePhysicalConnectionSetupOrderResponse() (response *CreatePhysicalConnectionSetupOrderResponse) {
+	response = &CreatePhysicalConnectionSetupOrderResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 2 - 0
services/vpc/create_vpn_connection.go

@@ -80,12 +80,14 @@ type CreateVpnConnectionRequest struct {
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	RemoteSubnet         string           `position:"Query" name:"RemoteSubnet"`
 	EffectImmediately    requests.Boolean `position:"Query" name:"EffectImmediately"`
+	AutoConfigRoute      requests.Boolean `position:"Query" name:"AutoConfigRoute"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	ClientToken          string           `position:"Query" name:"ClientToken"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	IpsecConfig          string           `position:"Query" name:"IpsecConfig"`
 	VpnGatewayId         string           `position:"Query" name:"VpnGatewayId"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	HealthCheckConfig    string           `position:"Query" name:"HealthCheckConfig"`
 	CustomerGatewayId    string           `position:"Query" name:"CustomerGatewayId"`
 	LocalSubnet          string           `position:"Query" name:"LocalSubnet"`
 	Name                 string           `position:"Query" name:"Name"`

+ 123 - 0
services/vpc/create_vpn_pbr_route_entry.go

@@ -0,0 +1,123 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateVpnPbrRouteEntry invokes the vpc.CreateVpnPbrRouteEntry API synchronously
+// api document: https://help.aliyun.com/api/vpc/createvpnpbrrouteentry.html
+func (client *Client) CreateVpnPbrRouteEntry(request *CreateVpnPbrRouteEntryRequest) (response *CreateVpnPbrRouteEntryResponse, err error) {
+	response = CreateCreateVpnPbrRouteEntryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateVpnPbrRouteEntryWithChan invokes the vpc.CreateVpnPbrRouteEntry API asynchronously
+// api document: https://help.aliyun.com/api/vpc/createvpnpbrrouteentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateVpnPbrRouteEntryWithChan(request *CreateVpnPbrRouteEntryRequest) (<-chan *CreateVpnPbrRouteEntryResponse, <-chan error) {
+	responseChan := make(chan *CreateVpnPbrRouteEntryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateVpnPbrRouteEntry(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateVpnPbrRouteEntryWithCallback invokes the vpc.CreateVpnPbrRouteEntry API asynchronously
+// api document: https://help.aliyun.com/api/vpc/createvpnpbrrouteentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateVpnPbrRouteEntryWithCallback(request *CreateVpnPbrRouteEntryRequest, callback func(response *CreateVpnPbrRouteEntryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateVpnPbrRouteEntryResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateVpnPbrRouteEntry(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateVpnPbrRouteEntryRequest is the request struct for api CreateVpnPbrRouteEntry
+type CreateVpnPbrRouteEntryRequest struct {
+	*requests.RpcRequest
+	RouteSource          string           `position:"Query" name:"RouteSource"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	Weight               requests.Integer `position:"Query" name:"Weight"`
+	Description          string           `position:"Query" name:"Description"`
+	VpnGatewayId         string           `position:"Query" name:"VpnGatewayId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	RouteDest            string           `position:"Query" name:"RouteDest"`
+	NextHop              string           `position:"Query" name:"NextHop"`
+	PublishVpc           requests.Boolean `position:"Query" name:"PublishVpc"`
+}
+
+// CreateVpnPbrRouteEntryResponse is the response struct for api CreateVpnPbrRouteEntry
+type CreateVpnPbrRouteEntryResponse struct {
+	*responses.BaseResponse
+	RequestId     string `json:"RequestId" xml:"RequestId"`
+	VpnInstanceId string `json:"VpnInstanceId" xml:"VpnInstanceId"`
+	RouteSource   string `json:"RouteSource" xml:"RouteSource"`
+	RouteDest     string `json:"RouteDest" xml:"RouteDest"`
+	NextHop       string `json:"NextHop" xml:"NextHop"`
+	Weight        int    `json:"Weight" xml:"Weight"`
+	OverlayMode   string `json:"OverlayMode" xml:"OverlayMode"`
+	Description   string `json:"Description" xml:"Description"`
+	State         string `json:"State" xml:"State"`
+	CreateTime    int    `json:"CreateTime" xml:"CreateTime"`
+}
+
+// CreateCreateVpnPbrRouteEntryRequest creates a request to invoke CreateVpnPbrRouteEntry API
+func CreateCreateVpnPbrRouteEntryRequest() (request *CreateVpnPbrRouteEntryRequest) {
+	request = &CreateVpnPbrRouteEntryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "CreateVpnPbrRouteEntry", "vpc", "openAPI")
+	return
+}
+
+// CreateCreateVpnPbrRouteEntryResponse creates a response to parse from CreateVpnPbrRouteEntry response
+func CreateCreateVpnPbrRouteEntryResponse() (response *CreateVpnPbrRouteEntryResponse) {
+	response = &CreateVpnPbrRouteEntryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 121 - 0
services/vpc/create_vpn_route_entry.go

@@ -0,0 +1,121 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateVpnRouteEntry invokes the vpc.CreateVpnRouteEntry API synchronously
+// api document: https://help.aliyun.com/api/vpc/createvpnrouteentry.html
+func (client *Client) CreateVpnRouteEntry(request *CreateVpnRouteEntryRequest) (response *CreateVpnRouteEntryResponse, err error) {
+	response = CreateCreateVpnRouteEntryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateVpnRouteEntryWithChan invokes the vpc.CreateVpnRouteEntry API asynchronously
+// api document: https://help.aliyun.com/api/vpc/createvpnrouteentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateVpnRouteEntryWithChan(request *CreateVpnRouteEntryRequest) (<-chan *CreateVpnRouteEntryResponse, <-chan error) {
+	responseChan := make(chan *CreateVpnRouteEntryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateVpnRouteEntry(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateVpnRouteEntryWithCallback invokes the vpc.CreateVpnRouteEntry API asynchronously
+// api document: https://help.aliyun.com/api/vpc/createvpnrouteentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateVpnRouteEntryWithCallback(request *CreateVpnRouteEntryRequest, callback func(response *CreateVpnRouteEntryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateVpnRouteEntryResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateVpnRouteEntry(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateVpnRouteEntryRequest is the request struct for api CreateVpnRouteEntry
+type CreateVpnRouteEntryRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	Weight               requests.Integer `position:"Query" name:"Weight"`
+	Description          string           `position:"Query" name:"Description"`
+	VpnGatewayId         string           `position:"Query" name:"VpnGatewayId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	RouteDest            string           `position:"Query" name:"RouteDest"`
+	NextHop              string           `position:"Query" name:"NextHop"`
+	PublishVpc           requests.Boolean `position:"Query" name:"PublishVpc"`
+}
+
+// CreateVpnRouteEntryResponse is the response struct for api CreateVpnRouteEntry
+type CreateVpnRouteEntryResponse struct {
+	*responses.BaseResponse
+	RequestId     string `json:"RequestId" xml:"RequestId"`
+	VpnInstanceId string `json:"VpnInstanceId" xml:"VpnInstanceId"`
+	RouteDest     string `json:"RouteDest" xml:"RouteDest"`
+	NextHop       string `json:"NextHop" xml:"NextHop"`
+	Weight        int    `json:"Weight" xml:"Weight"`
+	OverlayMode   string `json:"OverlayMode" xml:"OverlayMode"`
+	Description   string `json:"Description" xml:"Description"`
+	State         string `json:"State" xml:"State"`
+	CreateTime    int    `json:"CreateTime" xml:"CreateTime"`
+}
+
+// CreateCreateVpnRouteEntryRequest creates a request to invoke CreateVpnRouteEntry API
+func CreateCreateVpnRouteEntryRequest() (request *CreateVpnRouteEntryRequest) {
+	request = &CreateVpnRouteEntryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "CreateVpnRouteEntry", "vpc", "openAPI")
+	return
+}
+
+// CreateCreateVpnRouteEntryResponse creates a response to parse from CreateVpnRouteEntry response
+func CreateCreateVpnRouteEntryResponse() (response *CreateVpnRouteEntryResponse) {
+	response = &CreateVpnRouteEntryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vpc/delete_express_connect.go

@@ -0,0 +1,109 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteExpressConnect invokes the vpc.DeleteExpressConnect API synchronously
+// api document: https://help.aliyun.com/api/vpc/deleteexpressconnect.html
+func (client *Client) DeleteExpressConnect(request *DeleteExpressConnectRequest) (response *DeleteExpressConnectResponse, err error) {
+	response = CreateDeleteExpressConnectResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteExpressConnectWithChan invokes the vpc.DeleteExpressConnect API asynchronously
+// api document: https://help.aliyun.com/api/vpc/deleteexpressconnect.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteExpressConnectWithChan(request *DeleteExpressConnectRequest) (<-chan *DeleteExpressConnectResponse, <-chan error) {
+	responseChan := make(chan *DeleteExpressConnectResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteExpressConnect(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteExpressConnectWithCallback invokes the vpc.DeleteExpressConnect API asynchronously
+// api document: https://help.aliyun.com/api/vpc/deleteexpressconnect.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteExpressConnectWithCallback(request *DeleteExpressConnectRequest, callback func(response *DeleteExpressConnectResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteExpressConnectResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteExpressConnect(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteExpressConnectRequest is the request struct for api DeleteExpressConnect
+type DeleteExpressConnectRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	Force                requests.Boolean `position:"Query" name:"Force"`
+	RouterInterfaceId    string           `position:"Query" name:"RouterInterfaceId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteExpressConnectResponse is the response struct for api DeleteExpressConnect
+type DeleteExpressConnectResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteExpressConnectRequest creates a request to invoke DeleteExpressConnect API
+func CreateDeleteExpressConnectRequest() (request *DeleteExpressConnectRequest) {
+	request = &DeleteExpressConnectRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "DeleteExpressConnect", "vpc", "openAPI")
+	return
+}
+
+// CreateDeleteExpressConnectResponse creates a response to parse from DeleteExpressConnect response
+func CreateDeleteExpressConnectResponse() (response *DeleteExpressConnectResponse) {
+	response = &DeleteExpressConnectResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/vpc/delete_network_acl.go

@@ -0,0 +1,107 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteNetworkAcl invokes the vpc.DeleteNetworkAcl API synchronously
+// api document: https://help.aliyun.com/api/vpc/deletenetworkacl.html
+func (client *Client) DeleteNetworkAcl(request *DeleteNetworkAclRequest) (response *DeleteNetworkAclResponse, err error) {
+	response = CreateDeleteNetworkAclResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteNetworkAclWithChan invokes the vpc.DeleteNetworkAcl API asynchronously
+// api document: https://help.aliyun.com/api/vpc/deletenetworkacl.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteNetworkAclWithChan(request *DeleteNetworkAclRequest) (<-chan *DeleteNetworkAclResponse, <-chan error) {
+	responseChan := make(chan *DeleteNetworkAclResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteNetworkAcl(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteNetworkAclWithCallback invokes the vpc.DeleteNetworkAcl API asynchronously
+// api document: https://help.aliyun.com/api/vpc/deletenetworkacl.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteNetworkAclWithCallback(request *DeleteNetworkAclRequest, callback func(response *DeleteNetworkAclResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteNetworkAclResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteNetworkAcl(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteNetworkAclRequest is the request struct for api DeleteNetworkAcl
+type DeleteNetworkAclRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	NetworkAclId         string           `position:"Query" name:"NetworkAclId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DeleteNetworkAclResponse is the response struct for api DeleteNetworkAcl
+type DeleteNetworkAclResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteNetworkAclRequest creates a request to invoke DeleteNetworkAcl API
+func CreateDeleteNetworkAclRequest() (request *DeleteNetworkAclRequest) {
+	request = &DeleteNetworkAclRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "DeleteNetworkAcl", "vpc", "openAPI")
+	return
+}
+
+// CreateDeleteNetworkAclResponse creates a response to parse from DeleteNetworkAcl response
+func CreateDeleteNetworkAclResponse() (response *DeleteNetworkAclResponse) {
+	response = &DeleteNetworkAclResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/vpc/delete_vpn_pbr_route_entry.go

@@ -0,0 +1,112 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteVpnPbrRouteEntry invokes the vpc.DeleteVpnPbrRouteEntry API synchronously
+// api document: https://help.aliyun.com/api/vpc/deletevpnpbrrouteentry.html
+func (client *Client) DeleteVpnPbrRouteEntry(request *DeleteVpnPbrRouteEntryRequest) (response *DeleteVpnPbrRouteEntryResponse, err error) {
+	response = CreateDeleteVpnPbrRouteEntryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteVpnPbrRouteEntryWithChan invokes the vpc.DeleteVpnPbrRouteEntry API asynchronously
+// api document: https://help.aliyun.com/api/vpc/deletevpnpbrrouteentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteVpnPbrRouteEntryWithChan(request *DeleteVpnPbrRouteEntryRequest) (<-chan *DeleteVpnPbrRouteEntryResponse, <-chan error) {
+	responseChan := make(chan *DeleteVpnPbrRouteEntryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteVpnPbrRouteEntry(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteVpnPbrRouteEntryWithCallback invokes the vpc.DeleteVpnPbrRouteEntry API asynchronously
+// api document: https://help.aliyun.com/api/vpc/deletevpnpbrrouteentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteVpnPbrRouteEntryWithCallback(request *DeleteVpnPbrRouteEntryRequest, callback func(response *DeleteVpnPbrRouteEntryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteVpnPbrRouteEntryResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteVpnPbrRouteEntry(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteVpnPbrRouteEntryRequest is the request struct for api DeleteVpnPbrRouteEntry
+type DeleteVpnPbrRouteEntryRequest struct {
+	*requests.RpcRequest
+	RouteSource          string           `position:"Query" name:"RouteSource"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	Weight               requests.Integer `position:"Query" name:"Weight"`
+	VpnGatewayId         string           `position:"Query" name:"VpnGatewayId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	RouteDest            string           `position:"Query" name:"RouteDest"`
+	NextHop              string           `position:"Query" name:"NextHop"`
+}
+
+// DeleteVpnPbrRouteEntryResponse is the response struct for api DeleteVpnPbrRouteEntry
+type DeleteVpnPbrRouteEntryResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteVpnPbrRouteEntryRequest creates a request to invoke DeleteVpnPbrRouteEntry API
+func CreateDeleteVpnPbrRouteEntryRequest() (request *DeleteVpnPbrRouteEntryRequest) {
+	request = &DeleteVpnPbrRouteEntryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "DeleteVpnPbrRouteEntry", "vpc", "openAPI")
+	return
+}
+
+// CreateDeleteVpnPbrRouteEntryResponse creates a response to parse from DeleteVpnPbrRouteEntry response
+func CreateDeleteVpnPbrRouteEntryResponse() (response *DeleteVpnPbrRouteEntryResponse) {
+	response = &DeleteVpnPbrRouteEntryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 111 - 0
services/vpc/delete_vpn_route_entry.go

@@ -0,0 +1,111 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteVpnRouteEntry invokes the vpc.DeleteVpnRouteEntry API synchronously
+// api document: https://help.aliyun.com/api/vpc/deletevpnrouteentry.html
+func (client *Client) DeleteVpnRouteEntry(request *DeleteVpnRouteEntryRequest) (response *DeleteVpnRouteEntryResponse, err error) {
+	response = CreateDeleteVpnRouteEntryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteVpnRouteEntryWithChan invokes the vpc.DeleteVpnRouteEntry API asynchronously
+// api document: https://help.aliyun.com/api/vpc/deletevpnrouteentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteVpnRouteEntryWithChan(request *DeleteVpnRouteEntryRequest) (<-chan *DeleteVpnRouteEntryResponse, <-chan error) {
+	responseChan := make(chan *DeleteVpnRouteEntryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteVpnRouteEntry(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteVpnRouteEntryWithCallback invokes the vpc.DeleteVpnRouteEntry API asynchronously
+// api document: https://help.aliyun.com/api/vpc/deletevpnrouteentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteVpnRouteEntryWithCallback(request *DeleteVpnRouteEntryRequest, callback func(response *DeleteVpnRouteEntryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteVpnRouteEntryResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteVpnRouteEntry(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteVpnRouteEntryRequest is the request struct for api DeleteVpnRouteEntry
+type DeleteVpnRouteEntryRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	Weight               requests.Integer `position:"Query" name:"Weight"`
+	VpnGatewayId         string           `position:"Query" name:"VpnGatewayId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	RouteDest            string           `position:"Query" name:"RouteDest"`
+	NextHop              string           `position:"Query" name:"NextHop"`
+}
+
+// DeleteVpnRouteEntryResponse is the response struct for api DeleteVpnRouteEntry
+type DeleteVpnRouteEntryResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteVpnRouteEntryRequest creates a request to invoke DeleteVpnRouteEntry API
+func CreateDeleteVpnRouteEntryRequest() (request *DeleteVpnRouteEntryRequest) {
+	request = &DeleteVpnRouteEntryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "DeleteVpnRouteEntry", "vpc", "openAPI")
+	return
+}
+
+// CreateDeleteVpnRouteEntryResponse creates a response to parse from DeleteVpnRouteEntry response
+func CreateDeleteVpnRouteEntryResponse() (response *DeleteVpnRouteEntryResponse) {
+	response = &DeleteVpnRouteEntryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/vpc/describe_network_acl_attributes.go

@@ -0,0 +1,108 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeNetworkAclAttributes invokes the vpc.DescribeNetworkAclAttributes API synchronously
+// api document: https://help.aliyun.com/api/vpc/describenetworkaclattributes.html
+func (client *Client) DescribeNetworkAclAttributes(request *DescribeNetworkAclAttributesRequest) (response *DescribeNetworkAclAttributesResponse, err error) {
+	response = CreateDescribeNetworkAclAttributesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeNetworkAclAttributesWithChan invokes the vpc.DescribeNetworkAclAttributes API asynchronously
+// api document: https://help.aliyun.com/api/vpc/describenetworkaclattributes.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeNetworkAclAttributesWithChan(request *DescribeNetworkAclAttributesRequest) (<-chan *DescribeNetworkAclAttributesResponse, <-chan error) {
+	responseChan := make(chan *DescribeNetworkAclAttributesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeNetworkAclAttributes(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeNetworkAclAttributesWithCallback invokes the vpc.DescribeNetworkAclAttributes API asynchronously
+// api document: https://help.aliyun.com/api/vpc/describenetworkaclattributes.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeNetworkAclAttributesWithCallback(request *DescribeNetworkAclAttributesRequest, callback func(response *DescribeNetworkAclAttributesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeNetworkAclAttributesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeNetworkAclAttributes(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeNetworkAclAttributesRequest is the request struct for api DescribeNetworkAclAttributes
+type DescribeNetworkAclAttributesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	NetworkAclId         string           `position:"Query" name:"NetworkAclId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribeNetworkAclAttributesResponse is the response struct for api DescribeNetworkAclAttributes
+type DescribeNetworkAclAttributesResponse struct {
+	*responses.BaseResponse
+	RequestId           string              `json:"RequestId" xml:"RequestId"`
+	NetworkAclAttribute NetworkAclAttribute `json:"NetworkAclAttribute" xml:"NetworkAclAttribute"`
+}
+
+// CreateDescribeNetworkAclAttributesRequest creates a request to invoke DescribeNetworkAclAttributes API
+func CreateDescribeNetworkAclAttributesRequest() (request *DescribeNetworkAclAttributesRequest) {
+	request = &DescribeNetworkAclAttributesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "DescribeNetworkAclAttributes", "vpc", "openAPI")
+	return
+}
+
+// CreateDescribeNetworkAclAttributesResponse creates a response to parse from DescribeNetworkAclAttributes response
+func CreateDescribeNetworkAclAttributesResponse() (response *DescribeNetworkAclAttributesResponse) {
+	response = &DescribeNetworkAclAttributesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 117 - 0
services/vpc/describe_network_acls.go

@@ -0,0 +1,117 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeNetworkAcls invokes the vpc.DescribeNetworkAcls API synchronously
+// api document: https://help.aliyun.com/api/vpc/describenetworkacls.html
+func (client *Client) DescribeNetworkAcls(request *DescribeNetworkAclsRequest) (response *DescribeNetworkAclsResponse, err error) {
+	response = CreateDescribeNetworkAclsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeNetworkAclsWithChan invokes the vpc.DescribeNetworkAcls API asynchronously
+// api document: https://help.aliyun.com/api/vpc/describenetworkacls.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeNetworkAclsWithChan(request *DescribeNetworkAclsRequest) (<-chan *DescribeNetworkAclsResponse, <-chan error) {
+	responseChan := make(chan *DescribeNetworkAclsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeNetworkAcls(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeNetworkAclsWithCallback invokes the vpc.DescribeNetworkAcls API asynchronously
+// api document: https://help.aliyun.com/api/vpc/describenetworkacls.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeNetworkAclsWithCallback(request *DescribeNetworkAclsRequest, callback func(response *DescribeNetworkAclsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeNetworkAclsResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeNetworkAcls(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeNetworkAclsRequest is the request struct for api DescribeNetworkAcls
+type DescribeNetworkAclsRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	NetworkAclId         string           `position:"Query" name:"NetworkAclId"`
+	ResourceId           string           `position:"Query" name:"ResourceId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	NetworkAclName       string           `position:"Query" name:"NetworkAclName"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	ResourceType         string           `position:"Query" name:"ResourceType"`
+	VpcId                string           `position:"Query" name:"VpcId"`
+}
+
+// DescribeNetworkAclsResponse is the response struct for api DescribeNetworkAcls
+type DescribeNetworkAclsResponse struct {
+	*responses.BaseResponse
+	RequestId   string      `json:"RequestId" xml:"RequestId"`
+	TotalCount  string      `json:"TotalCount" xml:"TotalCount"`
+	PageNumber  string      `json:"PageNumber" xml:"PageNumber"`
+	PageSize    string      `json:"PageSize" xml:"PageSize"`
+	NetworkAcls NetworkAcls `json:"NetworkAcls" xml:"NetworkAcls"`
+}
+
+// CreateDescribeNetworkAclsRequest creates a request to invoke DescribeNetworkAcls API
+func CreateDescribeNetworkAclsRequest() (request *DescribeNetworkAclsRequest) {
+	request = &DescribeNetworkAclsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "DescribeNetworkAcls", "vpc", "openAPI")
+	return
+}
+
+// CreateDescribeNetworkAclsResponse creates a response to parse from DescribeNetworkAcls response
+func CreateDescribeNetworkAclsResponse() (response *DescribeNetworkAclsResponse) {
+	response = &DescribeNetworkAclsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vpc/describe_physical_connection_loa.go

@@ -0,0 +1,109 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribePhysicalConnectionLOA invokes the vpc.DescribePhysicalConnectionLOA API synchronously
+// api document: https://help.aliyun.com/api/vpc/describephysicalconnectionloa.html
+func (client *Client) DescribePhysicalConnectionLOA(request *DescribePhysicalConnectionLOARequest) (response *DescribePhysicalConnectionLOAResponse, err error) {
+	response = CreateDescribePhysicalConnectionLOAResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribePhysicalConnectionLOAWithChan invokes the vpc.DescribePhysicalConnectionLOA API asynchronously
+// api document: https://help.aliyun.com/api/vpc/describephysicalconnectionloa.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePhysicalConnectionLOAWithChan(request *DescribePhysicalConnectionLOARequest) (<-chan *DescribePhysicalConnectionLOAResponse, <-chan error) {
+	responseChan := make(chan *DescribePhysicalConnectionLOAResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribePhysicalConnectionLOA(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribePhysicalConnectionLOAWithCallback invokes the vpc.DescribePhysicalConnectionLOA API asynchronously
+// api document: https://help.aliyun.com/api/vpc/describephysicalconnectionloa.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribePhysicalConnectionLOAWithCallback(request *DescribePhysicalConnectionLOARequest, callback func(response *DescribePhysicalConnectionLOAResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribePhysicalConnectionLOAResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribePhysicalConnectionLOA(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribePhysicalConnectionLOARequest is the request struct for api DescribePhysicalConnectionLOA
+type DescribePhysicalConnectionLOARequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	InstanceId           string           `position:"Query" name:"InstanceId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// DescribePhysicalConnectionLOAResponse is the response struct for api DescribePhysicalConnectionLOA
+type DescribePhysicalConnectionLOAResponse struct {
+	*responses.BaseResponse
+	RequestId                 string                    `json:"RequestId" xml:"RequestId"`
+	PhysicalConnectionLOAType PhysicalConnectionLOAType `json:"PhysicalConnectionLOAType" xml:"PhysicalConnectionLOAType"`
+}
+
+// CreateDescribePhysicalConnectionLOARequest creates a request to invoke DescribePhysicalConnectionLOA API
+func CreateDescribePhysicalConnectionLOARequest() (request *DescribePhysicalConnectionLOARequest) {
+	request = &DescribePhysicalConnectionLOARequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "DescribePhysicalConnectionLOA", "vpc", "openAPI")
+	return
+}
+
+// CreateDescribePhysicalConnectionLOAResponse creates a response to parse from DescribePhysicalConnectionLOA response
+func CreateDescribePhysicalConnectionLOAResponse() (response *DescribePhysicalConnectionLOAResponse) {
+	response = &DescribePhysicalConnectionLOAResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 9 - 8
services/vpc/describe_physical_connections.go

@@ -76,14 +76,15 @@ func (client *Client) DescribePhysicalConnectionsWithCallback(request *DescribeP
 // DescribePhysicalConnectionsRequest is the request struct for api DescribePhysicalConnections
 type DescribePhysicalConnectionsRequest struct {
 	*requests.RpcRequest
-	Filter               *[]DescribePhysicalConnectionsFilter `position:"Query" name:"Filter"  type:"Repeated"`
-	ResourceOwnerId      requests.Integer                     `position:"Query" name:"ResourceOwnerId"`
-	ResourceOwnerAccount string                               `position:"Query" name:"ResourceOwnerAccount"`
-	ClientToken          string                               `position:"Query" name:"ClientToken"`
-	OwnerAccount         string                               `position:"Query" name:"OwnerAccount"`
-	PageSize             requests.Integer                     `position:"Query" name:"PageSize"`
-	OwnerId              requests.Integer                     `position:"Query" name:"OwnerId"`
-	PageNumber           requests.Integer                     `position:"Query" name:"PageNumber"`
+	Filter                 *[]DescribePhysicalConnectionsFilter `position:"Query" name:"Filter"  type:"Repeated"`
+	ResourceOwnerId        requests.Integer                     `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount   string                               `position:"Query" name:"ResourceOwnerAccount"`
+	ClientToken            string                               `position:"Query" name:"ClientToken"`
+	OwnerAccount           string                               `position:"Query" name:"OwnerAccount"`
+	PageSize               requests.Integer                     `position:"Query" name:"PageSize"`
+	OwnerId                requests.Integer                     `position:"Query" name:"OwnerId"`
+	IncludeReservationData requests.Boolean                     `position:"Query" name:"IncludeReservationData"`
+	PageNumber             requests.Integer                     `position:"Query" name:"PageNumber"`
 }
 
 // DescribePhysicalConnectionsFilter is a repeated param struct in DescribePhysicalConnectionsRequest

+ 1 - 0
services/vpc/describe_v_switch_attributes.go

@@ -99,6 +99,7 @@ type DescribeVSwitchAttributesResponse struct {
 	CreationTime            string                                    `json:"CreationTime" xml:"CreationTime"`
 	IsDefault               bool                                      `json:"IsDefault" xml:"IsDefault"`
 	ResourceGroupId         string                                    `json:"ResourceGroupId" xml:"ResourceGroupId"`
+	NetworkAclId            string                                    `json:"NetworkAclId" xml:"NetworkAclId"`
 	RouteTable              RouteTable                                `json:"RouteTable" xml:"RouteTable"`
 	CloudResources          CloudResourcesInDescribeVSwitchAttributes `json:"CloudResources" xml:"CloudResources"`
 }

+ 1 - 0
services/vpc/describe_vpc_attribute.go

@@ -100,6 +100,7 @@ type DescribeVpcAttributeResponse struct {
 	IsDefault          bool                                 `json:"IsDefault" xml:"IsDefault"`
 	ClassicLinkEnabled bool                                 `json:"ClassicLinkEnabled" xml:"ClassicLinkEnabled"`
 	ResourceGroupId    string                               `json:"ResourceGroupId" xml:"ResourceGroupId"`
+	NetworkAclNum      string                               `json:"NetworkAclNum" xml:"NetworkAclNum"`
 	VSwitchIds         VSwitchIdsInDescribeVpcAttribute     `json:"VSwitchIds" xml:"VSwitchIds"`
 	UserCidrs          UserCidrsInDescribeVpcAttribute      `json:"UserCidrs" xml:"UserCidrs"`
 	AssociatedCens     AssociatedCensInDescribeVpcAttribute `json:"AssociatedCens" xml:"AssociatedCens"`

+ 13 - 12
services/vpc/describe_vpn_connection.go

@@ -86,18 +86,19 @@ type DescribeVpnConnectionRequest struct {
 // DescribeVpnConnectionResponse is the response struct for api DescribeVpnConnection
 type DescribeVpnConnectionResponse struct {
 	*responses.BaseResponse
-	RequestId         string      `json:"RequestId" xml:"RequestId"`
-	VpnConnectionId   string      `json:"VpnConnectionId" xml:"VpnConnectionId"`
-	CustomerGatewayId string      `json:"CustomerGatewayId" xml:"CustomerGatewayId"`
-	VpnGatewayId      string      `json:"VpnGatewayId" xml:"VpnGatewayId"`
-	Name              string      `json:"Name" xml:"Name"`
-	LocalSubnet       string      `json:"LocalSubnet" xml:"LocalSubnet"`
-	RemoteSubnet      string      `json:"RemoteSubnet" xml:"RemoteSubnet"`
-	CreateTime        int         `json:"CreateTime" xml:"CreateTime"`
-	EffectImmediately bool        `json:"EffectImmediately" xml:"EffectImmediately"`
-	Status            string      `json:"Status" xml:"Status"`
-	IkeConfig         IkeConfig   `json:"IkeConfig" xml:"IkeConfig"`
-	IpsecConfig       IpsecConfig `json:"IpsecConfig" xml:"IpsecConfig"`
+	RequestId         string         `json:"RequestId" xml:"RequestId"`
+	VpnConnectionId   string         `json:"VpnConnectionId" xml:"VpnConnectionId"`
+	CustomerGatewayId string         `json:"CustomerGatewayId" xml:"CustomerGatewayId"`
+	VpnGatewayId      string         `json:"VpnGatewayId" xml:"VpnGatewayId"`
+	Name              string         `json:"Name" xml:"Name"`
+	LocalSubnet       string         `json:"LocalSubnet" xml:"LocalSubnet"`
+	RemoteSubnet      string         `json:"RemoteSubnet" xml:"RemoteSubnet"`
+	CreateTime        int            `json:"CreateTime" xml:"CreateTime"`
+	EffectImmediately bool           `json:"EffectImmediately" xml:"EffectImmediately"`
+	Status            string         `json:"Status" xml:"Status"`
+	IkeConfig         IkeConfig      `json:"IkeConfig" xml:"IkeConfig"`
+	IpsecConfig       IpsecConfig    `json:"IpsecConfig" xml:"IpsecConfig"`
+	VcoHealthCheck    VcoHealthCheck `json:"VcoHealthCheck" xml:"VcoHealthCheck"`
 }
 
 // CreateDescribeVpnConnectionRequest creates a request to invoke DescribeVpnConnection API

+ 1 - 0
services/vpc/describe_vpn_gateway.go

@@ -102,6 +102,7 @@ type DescribeVpnGatewayResponse struct {
 	IpsecVpn          string `json:"IpsecVpn" xml:"IpsecVpn"`
 	SslVpn            string `json:"SslVpn" xml:"SslVpn"`
 	SslMaxConnections int    `json:"SslMaxConnections" xml:"SslMaxConnections"`
+	Tag               string `json:"Tag" xml:"Tag"`
 }
 
 // CreateDescribeVpnGatewayRequest creates a request to invoke DescribeVpnGateway API

+ 113 - 0
services/vpc/describe_vpn_pbr_route_entries.go

@@ -0,0 +1,113 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeVpnPbrRouteEntries invokes the vpc.DescribeVpnPbrRouteEntries API synchronously
+// api document: https://help.aliyun.com/api/vpc/describevpnpbrrouteentries.html
+func (client *Client) DescribeVpnPbrRouteEntries(request *DescribeVpnPbrRouteEntriesRequest) (response *DescribeVpnPbrRouteEntriesResponse, err error) {
+	response = CreateDescribeVpnPbrRouteEntriesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeVpnPbrRouteEntriesWithChan invokes the vpc.DescribeVpnPbrRouteEntries API asynchronously
+// api document: https://help.aliyun.com/api/vpc/describevpnpbrrouteentries.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeVpnPbrRouteEntriesWithChan(request *DescribeVpnPbrRouteEntriesRequest) (<-chan *DescribeVpnPbrRouteEntriesResponse, <-chan error) {
+	responseChan := make(chan *DescribeVpnPbrRouteEntriesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeVpnPbrRouteEntries(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeVpnPbrRouteEntriesWithCallback invokes the vpc.DescribeVpnPbrRouteEntries API asynchronously
+// api document: https://help.aliyun.com/api/vpc/describevpnpbrrouteentries.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeVpnPbrRouteEntriesWithCallback(request *DescribeVpnPbrRouteEntriesRequest, callback func(response *DescribeVpnPbrRouteEntriesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeVpnPbrRouteEntriesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeVpnPbrRouteEntries(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeVpnPbrRouteEntriesRequest is the request struct for api DescribeVpnPbrRouteEntries
+type DescribeVpnPbrRouteEntriesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	VpnGatewayId         string           `position:"Query" name:"VpnGatewayId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+}
+
+// DescribeVpnPbrRouteEntriesResponse is the response struct for api DescribeVpnPbrRouteEntries
+type DescribeVpnPbrRouteEntriesResponse struct {
+	*responses.BaseResponse
+	RequestId          string             `json:"RequestId" xml:"RequestId"`
+	TotalCount         int                `json:"TotalCount" xml:"TotalCount"`
+	PageNumber         int                `json:"PageNumber" xml:"PageNumber"`
+	PageSize           int                `json:"PageSize" xml:"PageSize"`
+	VpnPbrRouteEntries VpnPbrRouteEntries `json:"VpnPbrRouteEntries" xml:"VpnPbrRouteEntries"`
+}
+
+// CreateDescribeVpnPbrRouteEntriesRequest creates a request to invoke DescribeVpnPbrRouteEntries API
+func CreateDescribeVpnPbrRouteEntriesRequest() (request *DescribeVpnPbrRouteEntriesRequest) {
+	request = &DescribeVpnPbrRouteEntriesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "DescribeVpnPbrRouteEntries", "vpc", "openAPI")
+	return
+}
+
+// CreateDescribeVpnPbrRouteEntriesResponse creates a response to parse from DescribeVpnPbrRouteEntries response
+func CreateDescribeVpnPbrRouteEntriesResponse() (response *DescribeVpnPbrRouteEntriesResponse) {
+	response = &DescribeVpnPbrRouteEntriesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/vpc/describe_vpn_route_entries.go

@@ -0,0 +1,113 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DescribeVpnRouteEntries invokes the vpc.DescribeVpnRouteEntries API synchronously
+// api document: https://help.aliyun.com/api/vpc/describevpnrouteentries.html
+func (client *Client) DescribeVpnRouteEntries(request *DescribeVpnRouteEntriesRequest) (response *DescribeVpnRouteEntriesResponse, err error) {
+	response = CreateDescribeVpnRouteEntriesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DescribeVpnRouteEntriesWithChan invokes the vpc.DescribeVpnRouteEntries API asynchronously
+// api document: https://help.aliyun.com/api/vpc/describevpnrouteentries.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeVpnRouteEntriesWithChan(request *DescribeVpnRouteEntriesRequest) (<-chan *DescribeVpnRouteEntriesResponse, <-chan error) {
+	responseChan := make(chan *DescribeVpnRouteEntriesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DescribeVpnRouteEntries(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DescribeVpnRouteEntriesWithCallback invokes the vpc.DescribeVpnRouteEntries API asynchronously
+// api document: https://help.aliyun.com/api/vpc/describevpnrouteentries.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DescribeVpnRouteEntriesWithCallback(request *DescribeVpnRouteEntriesRequest, callback func(response *DescribeVpnRouteEntriesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DescribeVpnRouteEntriesResponse
+		var err error
+		defer close(result)
+		response, err = client.DescribeVpnRouteEntries(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DescribeVpnRouteEntriesRequest is the request struct for api DescribeVpnRouteEntries
+type DescribeVpnRouteEntriesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	PageSize             requests.Integer `position:"Query" name:"PageSize"`
+	VpnGatewayId         string           `position:"Query" name:"VpnGatewayId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	PageNumber           requests.Integer `position:"Query" name:"PageNumber"`
+}
+
+// DescribeVpnRouteEntriesResponse is the response struct for api DescribeVpnRouteEntries
+type DescribeVpnRouteEntriesResponse struct {
+	*responses.BaseResponse
+	RequestId       string          `json:"RequestId" xml:"RequestId"`
+	TotalCount      int             `json:"TotalCount" xml:"TotalCount"`
+	PageNumber      int             `json:"PageNumber" xml:"PageNumber"`
+	PageSize        int             `json:"PageSize" xml:"PageSize"`
+	VpnRouteEntries VpnRouteEntries `json:"VpnRouteEntries" xml:"VpnRouteEntries"`
+}
+
+// CreateDescribeVpnRouteEntriesRequest creates a request to invoke DescribeVpnRouteEntries API
+func CreateDescribeVpnRouteEntriesRequest() (request *DescribeVpnRouteEntriesRequest) {
+	request = &DescribeVpnRouteEntriesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "DescribeVpnRouteEntries", "vpc", "openAPI")
+	return
+}
+
+// CreateDescribeVpnRouteEntriesResponse creates a response to parse from DescribeVpnRouteEntries response
+func CreateDescribeVpnRouteEntriesResponse() (response *DescribeVpnRouteEntriesResponse) {
+	response = &DescribeVpnRouteEntriesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vpc/modify_common_bandwidth_package_ip_bandwidth.go

@@ -0,0 +1,109 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ModifyCommonBandwidthPackageIpBandwidth invokes the vpc.ModifyCommonBandwidthPackageIpBandwidth API synchronously
+// api document: https://help.aliyun.com/api/vpc/modifycommonbandwidthpackageipbandwidth.html
+func (client *Client) ModifyCommonBandwidthPackageIpBandwidth(request *ModifyCommonBandwidthPackageIpBandwidthRequest) (response *ModifyCommonBandwidthPackageIpBandwidthResponse, err error) {
+	response = CreateModifyCommonBandwidthPackageIpBandwidthResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyCommonBandwidthPackageIpBandwidthWithChan invokes the vpc.ModifyCommonBandwidthPackageIpBandwidth API asynchronously
+// api document: https://help.aliyun.com/api/vpc/modifycommonbandwidthpackageipbandwidth.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyCommonBandwidthPackageIpBandwidthWithChan(request *ModifyCommonBandwidthPackageIpBandwidthRequest) (<-chan *ModifyCommonBandwidthPackageIpBandwidthResponse, <-chan error) {
+	responseChan := make(chan *ModifyCommonBandwidthPackageIpBandwidthResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyCommonBandwidthPackageIpBandwidth(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyCommonBandwidthPackageIpBandwidthWithCallback invokes the vpc.ModifyCommonBandwidthPackageIpBandwidth API asynchronously
+// api document: https://help.aliyun.com/api/vpc/modifycommonbandwidthpackageipbandwidth.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyCommonBandwidthPackageIpBandwidthWithCallback(request *ModifyCommonBandwidthPackageIpBandwidthRequest, callback func(response *ModifyCommonBandwidthPackageIpBandwidthResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyCommonBandwidthPackageIpBandwidthResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyCommonBandwidthPackageIpBandwidth(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyCommonBandwidthPackageIpBandwidthRequest is the request struct for api ModifyCommonBandwidthPackageIpBandwidth
+type ModifyCommonBandwidthPackageIpBandwidthRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	BandwidthPackageId   string           `position:"Query" name:"BandwidthPackageId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	Bandwidth            string           `position:"Query" name:"Bandwidth"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	EipId                string           `position:"Query" name:"EipId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// ModifyCommonBandwidthPackageIpBandwidthResponse is the response struct for api ModifyCommonBandwidthPackageIpBandwidth
+type ModifyCommonBandwidthPackageIpBandwidthResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateModifyCommonBandwidthPackageIpBandwidthRequest creates a request to invoke ModifyCommonBandwidthPackageIpBandwidth API
+func CreateModifyCommonBandwidthPackageIpBandwidthRequest() (request *ModifyCommonBandwidthPackageIpBandwidthRequest) {
+	request = &ModifyCommonBandwidthPackageIpBandwidthRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "ModifyCommonBandwidthPackageIpBandwidth", "vpc", "openAPI")
+	return
+}
+
+// CreateModifyCommonBandwidthPackageIpBandwidthResponse creates a response to parse from ModifyCommonBandwidthPackageIpBandwidth response
+func CreateModifyCommonBandwidthPackageIpBandwidthResponse() (response *ModifyCommonBandwidthPackageIpBandwidthResponse) {
+	response = &ModifyCommonBandwidthPackageIpBandwidthResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/vpc/modify_network_acl_attributes.go

@@ -0,0 +1,109 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ModifyNetworkAclAttributes invokes the vpc.ModifyNetworkAclAttributes API synchronously
+// api document: https://help.aliyun.com/api/vpc/modifynetworkaclattributes.html
+func (client *Client) ModifyNetworkAclAttributes(request *ModifyNetworkAclAttributesRequest) (response *ModifyNetworkAclAttributesResponse, err error) {
+	response = CreateModifyNetworkAclAttributesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyNetworkAclAttributesWithChan invokes the vpc.ModifyNetworkAclAttributes API asynchronously
+// api document: https://help.aliyun.com/api/vpc/modifynetworkaclattributes.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyNetworkAclAttributesWithChan(request *ModifyNetworkAclAttributesRequest) (<-chan *ModifyNetworkAclAttributesResponse, <-chan error) {
+	responseChan := make(chan *ModifyNetworkAclAttributesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyNetworkAclAttributes(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyNetworkAclAttributesWithCallback invokes the vpc.ModifyNetworkAclAttributes API asynchronously
+// api document: https://help.aliyun.com/api/vpc/modifynetworkaclattributes.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyNetworkAclAttributesWithCallback(request *ModifyNetworkAclAttributesRequest, callback func(response *ModifyNetworkAclAttributesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyNetworkAclAttributesResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyNetworkAclAttributes(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyNetworkAclAttributesRequest is the request struct for api ModifyNetworkAclAttributes
+type ModifyNetworkAclAttributesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	Description          string           `position:"Query" name:"Description"`
+	NetworkAclId         string           `position:"Query" name:"NetworkAclId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	NetworkAclName       string           `position:"Query" name:"NetworkAclName"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+}
+
+// ModifyNetworkAclAttributesResponse is the response struct for api ModifyNetworkAclAttributes
+type ModifyNetworkAclAttributesResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateModifyNetworkAclAttributesRequest creates a request to invoke ModifyNetworkAclAttributes API
+func CreateModifyNetworkAclAttributesRequest() (request *ModifyNetworkAclAttributesRequest) {
+	request = &ModifyNetworkAclAttributesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "ModifyNetworkAclAttributes", "vpc", "openAPI")
+	return
+}
+
+// CreateModifyNetworkAclAttributesResponse creates a response to parse from ModifyNetworkAclAttributes response
+func CreateModifyNetworkAclAttributesResponse() (response *ModifyNetworkAclAttributesResponse) {
+	response = &ModifyNetworkAclAttributesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 15 - 12
services/vpc/modify_vpn_connection_attribute.go

@@ -80,11 +80,13 @@ type ModifyVpnConnectionAttributeRequest struct {
 	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
 	RemoteSubnet         string           `position:"Query" name:"RemoteSubnet"`
 	EffectImmediately    requests.Boolean `position:"Query" name:"EffectImmediately"`
+	AutoConfigRoute      requests.Boolean `position:"Query" name:"AutoConfigRoute"`
 	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
 	ClientToken          string           `position:"Query" name:"ClientToken"`
 	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
 	IpsecConfig          string           `position:"Query" name:"IpsecConfig"`
 	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	HealthCheckConfig    string           `position:"Query" name:"HealthCheckConfig"`
 	LocalSubnet          string           `position:"Query" name:"LocalSubnet"`
 	VpnConnectionId      string           `position:"Query" name:"VpnConnectionId"`
 	Name                 string           `position:"Query" name:"Name"`
@@ -93,18 +95,19 @@ type ModifyVpnConnectionAttributeRequest struct {
 // ModifyVpnConnectionAttributeResponse is the response struct for api ModifyVpnConnectionAttribute
 type ModifyVpnConnectionAttributeResponse struct {
 	*responses.BaseResponse
-	RequestId         string      `json:"RequestId" xml:"RequestId"`
-	VpnConnectionId   string      `json:"VpnConnectionId" xml:"VpnConnectionId"`
-	CustomerGatewayId string      `json:"CustomerGatewayId" xml:"CustomerGatewayId"`
-	VpnGatewayId      string      `json:"VpnGatewayId" xml:"VpnGatewayId"`
-	Name              string      `json:"Name" xml:"Name"`
-	Description       string      `json:"Description" xml:"Description"`
-	LocalSubnet       string      `json:"LocalSubnet" xml:"LocalSubnet"`
-	RemoteSubnet      string      `json:"RemoteSubnet" xml:"RemoteSubnet"`
-	CreateTime        int         `json:"CreateTime" xml:"CreateTime"`
-	EffectImmediately bool        `json:"EffectImmediately" xml:"EffectImmediately"`
-	IkeConfig         IkeConfig   `json:"IkeConfig" xml:"IkeConfig"`
-	IpsecConfig       IpsecConfig `json:"IpsecConfig" xml:"IpsecConfig"`
+	RequestId         string         `json:"RequestId" xml:"RequestId"`
+	VpnConnectionId   string         `json:"VpnConnectionId" xml:"VpnConnectionId"`
+	CustomerGatewayId string         `json:"CustomerGatewayId" xml:"CustomerGatewayId"`
+	VpnGatewayId      string         `json:"VpnGatewayId" xml:"VpnGatewayId"`
+	Name              string         `json:"Name" xml:"Name"`
+	Description       string         `json:"Description" xml:"Description"`
+	LocalSubnet       string         `json:"LocalSubnet" xml:"LocalSubnet"`
+	RemoteSubnet      string         `json:"RemoteSubnet" xml:"RemoteSubnet"`
+	CreateTime        int            `json:"CreateTime" xml:"CreateTime"`
+	EffectImmediately bool           `json:"EffectImmediately" xml:"EffectImmediately"`
+	IkeConfig         IkeConfig      `json:"IkeConfig" xml:"IkeConfig"`
+	IpsecConfig       IpsecConfig    `json:"IpsecConfig" xml:"IpsecConfig"`
+	VcoHealthCheck    VcoHealthCheck `json:"VcoHealthCheck" xml:"VcoHealthCheck"`
 }
 
 // CreateModifyVpnConnectionAttributeRequest creates a request to invoke ModifyVpnConnectionAttribute API

+ 113 - 0
services/vpc/modify_vpn_pbr_route_entry_weight.go

@@ -0,0 +1,113 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ModifyVpnPbrRouteEntryWeight invokes the vpc.ModifyVpnPbrRouteEntryWeight API synchronously
+// api document: https://help.aliyun.com/api/vpc/modifyvpnpbrrouteentryweight.html
+func (client *Client) ModifyVpnPbrRouteEntryWeight(request *ModifyVpnPbrRouteEntryWeightRequest) (response *ModifyVpnPbrRouteEntryWeightResponse, err error) {
+	response = CreateModifyVpnPbrRouteEntryWeightResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyVpnPbrRouteEntryWeightWithChan invokes the vpc.ModifyVpnPbrRouteEntryWeight API asynchronously
+// api document: https://help.aliyun.com/api/vpc/modifyvpnpbrrouteentryweight.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyVpnPbrRouteEntryWeightWithChan(request *ModifyVpnPbrRouteEntryWeightRequest) (<-chan *ModifyVpnPbrRouteEntryWeightResponse, <-chan error) {
+	responseChan := make(chan *ModifyVpnPbrRouteEntryWeightResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyVpnPbrRouteEntryWeight(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyVpnPbrRouteEntryWeightWithCallback invokes the vpc.ModifyVpnPbrRouteEntryWeight API asynchronously
+// api document: https://help.aliyun.com/api/vpc/modifyvpnpbrrouteentryweight.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyVpnPbrRouteEntryWeightWithCallback(request *ModifyVpnPbrRouteEntryWeightRequest, callback func(response *ModifyVpnPbrRouteEntryWeightResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyVpnPbrRouteEntryWeightResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyVpnPbrRouteEntryWeight(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyVpnPbrRouteEntryWeightRequest is the request struct for api ModifyVpnPbrRouteEntryWeight
+type ModifyVpnPbrRouteEntryWeightRequest struct {
+	*requests.RpcRequest
+	RouteSource          string           `position:"Query" name:"RouteSource"`
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	Weight               requests.Integer `position:"Query" name:"Weight"`
+	VpnGatewayId         string           `position:"Query" name:"VpnGatewayId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	NewWeight            requests.Integer `position:"Query" name:"NewWeight"`
+	RouteDest            string           `position:"Query" name:"RouteDest"`
+	NextHop              string           `position:"Query" name:"NextHop"`
+}
+
+// ModifyVpnPbrRouteEntryWeightResponse is the response struct for api ModifyVpnPbrRouteEntryWeight
+type ModifyVpnPbrRouteEntryWeightResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateModifyVpnPbrRouteEntryWeightRequest creates a request to invoke ModifyVpnPbrRouteEntryWeight API
+func CreateModifyVpnPbrRouteEntryWeightRequest() (request *ModifyVpnPbrRouteEntryWeightRequest) {
+	request = &ModifyVpnPbrRouteEntryWeightRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "ModifyVpnPbrRouteEntryWeight", "vpc", "openAPI")
+	return
+}
+
+// CreateModifyVpnPbrRouteEntryWeightResponse creates a response to parse from ModifyVpnPbrRouteEntryWeight response
+func CreateModifyVpnPbrRouteEntryWeightResponse() (response *ModifyVpnPbrRouteEntryWeightResponse) {
+	response = &ModifyVpnPbrRouteEntryWeightResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/vpc/modify_vpn_route_entry_weight.go

@@ -0,0 +1,112 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ModifyVpnRouteEntryWeight invokes the vpc.ModifyVpnRouteEntryWeight API synchronously
+// api document: https://help.aliyun.com/api/vpc/modifyvpnrouteentryweight.html
+func (client *Client) ModifyVpnRouteEntryWeight(request *ModifyVpnRouteEntryWeightRequest) (response *ModifyVpnRouteEntryWeightResponse, err error) {
+	response = CreateModifyVpnRouteEntryWeightResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ModifyVpnRouteEntryWeightWithChan invokes the vpc.ModifyVpnRouteEntryWeight API asynchronously
+// api document: https://help.aliyun.com/api/vpc/modifyvpnrouteentryweight.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyVpnRouteEntryWeightWithChan(request *ModifyVpnRouteEntryWeightRequest) (<-chan *ModifyVpnRouteEntryWeightResponse, <-chan error) {
+	responseChan := make(chan *ModifyVpnRouteEntryWeightResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyVpnRouteEntryWeight(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ModifyVpnRouteEntryWeightWithCallback invokes the vpc.ModifyVpnRouteEntryWeight API asynchronously
+// api document: https://help.aliyun.com/api/vpc/modifyvpnrouteentryweight.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ModifyVpnRouteEntryWeightWithCallback(request *ModifyVpnRouteEntryWeightRequest, callback func(response *ModifyVpnRouteEntryWeightResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyVpnRouteEntryWeightResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyVpnRouteEntryWeight(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ModifyVpnRouteEntryWeightRequest is the request struct for api ModifyVpnRouteEntryWeight
+type ModifyVpnRouteEntryWeightRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	Weight               requests.Integer `position:"Query" name:"Weight"`
+	VpnGatewayId         string           `position:"Query" name:"VpnGatewayId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	NewWeight            requests.Integer `position:"Query" name:"NewWeight"`
+	RouteDest            string           `position:"Query" name:"RouteDest"`
+	NextHop              string           `position:"Query" name:"NextHop"`
+}
+
+// ModifyVpnRouteEntryWeightResponse is the response struct for api ModifyVpnRouteEntryWeight
+type ModifyVpnRouteEntryWeightResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateModifyVpnRouteEntryWeightRequest creates a request to invoke ModifyVpnRouteEntryWeight API
+func CreateModifyVpnRouteEntryWeightRequest() (request *ModifyVpnRouteEntryWeightRequest) {
+	request = &ModifyVpnRouteEntryWeightRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "ModifyVpnRouteEntryWeight", "vpc", "openAPI")
+	return
+}
+
+// CreateModifyVpnRouteEntryWeightResponse creates a response to parse from ModifyVpnRouteEntryWeight response
+func CreateModifyVpnRouteEntryWeightResponse() (response *ModifyVpnRouteEntryWeightResponse) {
+	response = &ModifyVpnRouteEntryWeightResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/vpc/publish_vpn_route_entry.go

@@ -0,0 +1,112 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// PublishVpnRouteEntry invokes the vpc.PublishVpnRouteEntry API synchronously
+// api document: https://help.aliyun.com/api/vpc/publishvpnrouteentry.html
+func (client *Client) PublishVpnRouteEntry(request *PublishVpnRouteEntryRequest) (response *PublishVpnRouteEntryResponse, err error) {
+	response = CreatePublishVpnRouteEntryResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// PublishVpnRouteEntryWithChan invokes the vpc.PublishVpnRouteEntry API asynchronously
+// api document: https://help.aliyun.com/api/vpc/publishvpnrouteentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) PublishVpnRouteEntryWithChan(request *PublishVpnRouteEntryRequest) (<-chan *PublishVpnRouteEntryResponse, <-chan error) {
+	responseChan := make(chan *PublishVpnRouteEntryResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.PublishVpnRouteEntry(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// PublishVpnRouteEntryWithCallback invokes the vpc.PublishVpnRouteEntry API asynchronously
+// api document: https://help.aliyun.com/api/vpc/publishvpnrouteentry.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) PublishVpnRouteEntryWithCallback(request *PublishVpnRouteEntryRequest, callback func(response *PublishVpnRouteEntryResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *PublishVpnRouteEntryResponse
+		var err error
+		defer close(result)
+		response, err = client.PublishVpnRouteEntry(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// PublishVpnRouteEntryRequest is the request struct for api PublishVpnRouteEntry
+type PublishVpnRouteEntryRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer `position:"Query" name:"ResourceOwnerId"`
+	PublishVpc           requests.Boolean `position:"Query" name:"PublishVpc"`
+	ResourceOwnerAccount string           `position:"Query" name:"ResourceOwnerAccount"`
+	ClientToken          string           `position:"Query" name:"ClientToken"`
+	OwnerAccount         string           `position:"Query" name:"OwnerAccount"`
+	VpnGatewayId         string           `position:"Query" name:"VpnGatewayId"`
+	OwnerId              requests.Integer `position:"Query" name:"OwnerId"`
+	RouteDest            string           `position:"Query" name:"RouteDest"`
+	NextHop              string           `position:"Query" name:"NextHop"`
+	RouteType            string           `position:"Query" name:"RouteType"`
+}
+
+// PublishVpnRouteEntryResponse is the response struct for api PublishVpnRouteEntry
+type PublishVpnRouteEntryResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreatePublishVpnRouteEntryRequest creates a request to invoke PublishVpnRouteEntry API
+func CreatePublishVpnRouteEntryRequest() (request *PublishVpnRouteEntryRequest) {
+	request = &PublishVpnRouteEntryRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "PublishVpnRouteEntry", "vpc", "openAPI")
+	return
+}
+
+// CreatePublishVpnRouteEntryResponse creates a response to parse from PublishVpnRouteEntry response
+func CreatePublishVpnRouteEntryResponse() (response *PublishVpnRouteEntryResponse) {
+	response = &PublishVpnRouteEntryResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 21 - 0
services/vpc/struct_egress_acl_entries_in_create_network_acl.go

@@ -0,0 +1,21 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// EgressAclEntriesInCreateNetworkAcl is a nested struct in vpc response
+type EgressAclEntriesInCreateNetworkAcl struct {
+	EgressAclEntry []EgressAclEntry `json:"EgressAclEntry" xml:"EgressAclEntry"`
+}

+ 21 - 0
services/vpc/struct_egress_acl_entries_in_describe_network_acl_attributes.go

@@ -0,0 +1,21 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// EgressAclEntriesInDescribeNetworkAclAttributes is a nested struct in vpc response
+type EgressAclEntriesInDescribeNetworkAclAttributes struct {
+	EgressAclEntry []EgressAclEntry `json:"EgressAclEntry" xml:"EgressAclEntry"`
+}

+ 21 - 0
services/vpc/struct_egress_acl_entries_in_describe_network_acls.go

@@ -0,0 +1,21 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// EgressAclEntriesInDescribeNetworkAcls is a nested struct in vpc response
+type EgressAclEntriesInDescribeNetworkAcls struct {
+	EgressAclEntry []EgressAclEntry `json:"EgressAclEntry" xml:"EgressAclEntry"`
+}

+ 28 - 0
services/vpc/struct_egress_acl_entry.go

@@ -0,0 +1,28 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// EgressAclEntry is a nested struct in vpc response
+type EgressAclEntry struct {
+	DestinationCidrIp   string `json:"DestinationCidrIp" xml:"DestinationCidrIp"`
+	Protocol            string `json:"Protocol" xml:"Protocol"`
+	NetworkAclEntryId   string `json:"NetworkAclEntryId" xml:"NetworkAclEntryId"`
+	Port                string `json:"Port" xml:"Port"`
+	NetworkAclEntryName string `json:"NetworkAclEntryName" xml:"NetworkAclEntryName"`
+	EntryType           string `json:"EntryType" xml:"EntryType"`
+	Policy              string `json:"Policy" xml:"Policy"`
+	Description         string `json:"Description" xml:"Description"`
+}

+ 2 - 0
services/vpc/struct_eip_address.go

@@ -37,6 +37,7 @@ type EipAddress struct {
 	Descritpion                   string                               `json:"Descritpion" xml:"Descritpion"`
 	BandwidthPackageId            string                               `json:"BandwidthPackageId" xml:"BandwidthPackageId"`
 	BandwidthPackageType          string                               `json:"BandwidthPackageType" xml:"BandwidthPackageType"`
+	BandwidthPackageBandwidth     string                               `json:"BandwidthPackageBandwidth" xml:"BandwidthPackageBandwidth"`
 	ResourceGroupId               string                               `json:"ResourceGroupId" xml:"ResourceGroupId"`
 	HasReservationData            string                               `json:"HasReservationData" xml:"HasReservationData"`
 	ReservationBandwidth          string                               `json:"ReservationBandwidth" xml:"ReservationBandwidth"`
@@ -44,6 +45,7 @@ type EipAddress struct {
 	ReservationActiveTime         string                               `json:"ReservationActiveTime" xml:"ReservationActiveTime"`
 	ReservationOrderType          string                               `json:"ReservationOrderType" xml:"ReservationOrderType"`
 	Mode                          string                               `json:"Mode" xml:"Mode"`
+	SecondLimited                 bool                                 `json:"SecondLimited" xml:"SecondLimited"`
 	AvailableRegions              AvailableRegions                     `json:"AvailableRegions" xml:"AvailableRegions"`
 	OperationLocks                OperationLocksInDescribeEipAddresses `json:"OperationLocks" xml:"OperationLocks"`
 	Tags                          TagsInDescribeEipAddresses           `json:"Tags" xml:"Tags"`

+ 21 - 0
services/vpc/struct_ingress_acl_entries_in_create_network_acl.go

@@ -0,0 +1,21 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// IngressAclEntriesInCreateNetworkAcl is a nested struct in vpc response
+type IngressAclEntriesInCreateNetworkAcl struct {
+	IngressAclEntry []IngressAclEntry `json:"IngressAclEntry" xml:"IngressAclEntry"`
+}

+ 21 - 0
services/vpc/struct_ingress_acl_entries_in_describe_network_acl_attributes.go

@@ -0,0 +1,21 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// IngressAclEntriesInDescribeNetworkAclAttributes is a nested struct in vpc response
+type IngressAclEntriesInDescribeNetworkAclAttributes struct {
+	IngressAclEntry []IngressAclEntry `json:"IngressAclEntry" xml:"IngressAclEntry"`
+}

+ 21 - 0
services/vpc/struct_ingress_acl_entries_in_describe_network_acls.go

@@ -0,0 +1,21 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// IngressAclEntriesInDescribeNetworkAcls is a nested struct in vpc response
+type IngressAclEntriesInDescribeNetworkAcls struct {
+	IngressAclEntry []IngressAclEntry `json:"IngressAclEntry" xml:"IngressAclEntry"`
+}

+ 28 - 0
services/vpc/struct_ingress_acl_entry.go

@@ -0,0 +1,28 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// IngressAclEntry is a nested struct in vpc response
+type IngressAclEntry struct {
+	Protocol            string `json:"Protocol" xml:"Protocol"`
+	NetworkAclEntryId   string `json:"NetworkAclEntryId" xml:"NetworkAclEntryId"`
+	Port                string `json:"Port" xml:"Port"`
+	SourceCidrIp        string `json:"SourceCidrIp" xml:"SourceCidrIp"`
+	NetworkAclEntryName string `json:"NetworkAclEntryName" xml:"NetworkAclEntryName"`
+	EntryType           string `json:"EntryType" xml:"EntryType"`
+	Policy              string `json:"Policy" xml:"Policy"`
+	Description         string `json:"Description" xml:"Description"`
+}

+ 30 - 0
services/vpc/struct_network_acl.go

@@ -0,0 +1,30 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// NetworkAcl is a nested struct in vpc response
+type NetworkAcl struct {
+	NetworkAclId      string                                 `json:"NetworkAclId" xml:"NetworkAclId"`
+	RegionId          string                                 `json:"RegionId" xml:"RegionId"`
+	NetworkAclName    string                                 `json:"NetworkAclName" xml:"NetworkAclName"`
+	Description       string                                 `json:"Description" xml:"Description"`
+	VpcId             string                                 `json:"VpcId" xml:"VpcId"`
+	CreationTime      string                                 `json:"CreationTime" xml:"CreationTime"`
+	Status            string                                 `json:"Status" xml:"Status"`
+	IngressAclEntries IngressAclEntriesInDescribeNetworkAcls `json:"IngressAclEntries" xml:"IngressAclEntries"`
+	EgressAclEntries  EgressAclEntriesInDescribeNetworkAcls  `json:"EgressAclEntries" xml:"EgressAclEntries"`
+	Resources         ResourcesInDescribeNetworkAcls         `json:"Resources" xml:"Resources"`
+}

+ 30 - 0
services/vpc/struct_network_acl_attribute.go

@@ -0,0 +1,30 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// NetworkAclAttribute is a nested struct in vpc response
+type NetworkAclAttribute struct {
+	NetworkAclName    string                                          `json:"NetworkAclName" xml:"NetworkAclName"`
+	RegionId          string                                          `json:"RegionId" xml:"RegionId"`
+	NetworkAclId      string                                          `json:"NetworkAclId" xml:"NetworkAclId"`
+	CreationTime      string                                          `json:"CreationTime" xml:"CreationTime"`
+	VpcId             string                                          `json:"VpcId" xml:"VpcId"`
+	Status            string                                          `json:"Status" xml:"Status"`
+	Description       string                                          `json:"Description" xml:"Description"`
+	IngressAclEntries IngressAclEntriesInDescribeNetworkAclAttributes `json:"IngressAclEntries" xml:"IngressAclEntries"`
+	Resources         ResourcesInDescribeNetworkAclAttributes         `json:"Resources" xml:"Resources"`
+	EgressAclEntries  EgressAclEntriesInDescribeNetworkAclAttributes  `json:"EgressAclEntries" xml:"EgressAclEntries"`
+}

+ 21 - 0
services/vpc/struct_network_acls.go

@@ -0,0 +1,21 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// NetworkAcls is a nested struct in vpc response
+type NetworkAcls struct {
+	NetworkAcl []NetworkAcl `json:"NetworkAcl" xml:"NetworkAcl"`
+}

+ 31 - 0
services/vpc/struct_physical_connection_loa_type.go

@@ -0,0 +1,31 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// PhysicalConnectionLOAType is a nested struct in vpc response
+type PhysicalConnectionLOAType struct {
+	InstanceId           string `json:"InstanceId" xml:"InstanceId"`
+	CompanyName          string `json:"CompanyName" xml:"CompanyName"`
+	CompanyLocalizedName string `json:"CompanyLocalizedName" xml:"CompanyLocalizedName"`
+	LineType             string `json:"LineType" xml:"LineType"`
+	LineCode             string `json:"LineCode" xml:"LineCode"`
+	LineLabel            string `json:"LineLabel" xml:"LineLabel"`
+	ConstructionTime     string `json:"ConstructionTime" xml:"ConstructionTime"`
+	Status               string `json:"Status" xml:"Status"`
+	LoaUrl               string `json:"LoaUrl" xml:"LoaUrl"`
+	SI                   string `json:"SI" xml:"SI"`
+	PMInfo               PMInfo `json:"PMInfo" xml:"PMInfo"`
+}

+ 7 - 0
services/vpc/struct_physical_connection_type.go

@@ -35,4 +35,11 @@ type PhysicalConnectionType struct {
 	PortNumber                    string `json:"PortNumber" xml:"PortNumber"`
 	CircuitCode                   string `json:"CircuitCode" xml:"CircuitCode"`
 	Bandwidth                     int    `json:"Bandwidth" xml:"Bandwidth"`
+	LoaStatus                     string `json:"LoaStatus" xml:"LoaStatus"`
+	HasReservationData            string `json:"HasReservationData" xml:"HasReservationData"`
+	ReservationInternetChargeType string `json:"ReservationInternetChargeType" xml:"ReservationInternetChargeType"`
+	ReservationActiveTime         string `json:"ReservationActiveTime" xml:"ReservationActiveTime"`
+	ReservationOrderType          string `json:"ReservationOrderType" xml:"ReservationOrderType"`
+	EndTime                       string `json:"EndTime" xml:"EndTime"`
+	ChargeType                    string `json:"ChargeType" xml:"ChargeType"`
 }

+ 21 - 0
services/vpc/struct_pm_info.go

@@ -0,0 +1,21 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// PMInfo is a nested struct in vpc response
+type PMInfo struct {
+	PMInfoItem []PMInfoItem `json:"PMInfoItem" xml:"PMInfoItem"`
+}

+ 25 - 0
services/vpc/struct_pm_info_item.go

@@ -0,0 +1,25 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// PMInfoItem is a nested struct in vpc response
+type PMInfoItem struct {
+	PMName            string `json:"PMName" xml:"PMName"`
+	PMContactInfo     string `json:"PMContactInfo" xml:"PMContactInfo"`
+	PMCertificateType string `json:"PMCertificateType" xml:"PMCertificateType"`
+	PMCertificateNo   string `json:"PMCertificateNo" xml:"PMCertificateNo"`
+	PMGender          string `json:"PMGender" xml:"PMGender"`
+}

+ 23 - 0
services/vpc/struct_resource.go

@@ -0,0 +1,23 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Resource is a nested struct in vpc response
+type Resource struct {
+	ResourceId   string `json:"ResourceId" xml:"ResourceId"`
+	ResourceType string `json:"ResourceType" xml:"ResourceType"`
+	Status       string `json:"Status" xml:"Status"`
+}

+ 21 - 0
services/vpc/struct_resources_in_create_network_acl.go

@@ -0,0 +1,21 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// ResourcesInCreateNetworkAcl is a nested struct in vpc response
+type ResourcesInCreateNetworkAcl struct {
+	Resource []Resource `json:"Resource" xml:"Resource"`
+}

+ 21 - 0
services/vpc/struct_resources_in_describe_network_acl_attributes.go

@@ -0,0 +1,21 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// ResourcesInDescribeNetworkAclAttributes is a nested struct in vpc response
+type ResourcesInDescribeNetworkAclAttributes struct {
+	Resource []Resource `json:"Resource" xml:"Resource"`
+}

+ 21 - 0
services/vpc/struct_resources_in_describe_network_acls.go

@@ -0,0 +1,21 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// ResourcesInDescribeNetworkAcls is a nested struct in vpc response
+type ResourcesInDescribeNetworkAcls struct {
+	Resource []Resource `json:"Resource" xml:"Resource"`
+}

+ 1 - 0
services/vpc/struct_v_switch.go

@@ -29,6 +29,7 @@ type VSwitch struct {
 	CreationTime            string                  `json:"CreationTime" xml:"CreationTime"`
 	IsDefault               bool                    `json:"IsDefault" xml:"IsDefault"`
 	ResourceGroupId         string                  `json:"ResourceGroupId" xml:"ResourceGroupId"`
+	NetworkAclId            string                  `json:"NetworkAclId" xml:"NetworkAclId"`
 	RouteTable              RouteTable              `json:"RouteTable" xml:"RouteTable"`
 	Tags                    TagsInDescribeVSwitches `json:"Tags" xml:"Tags"`
 }

+ 26 - 0
services/vpc/struct_vco_health_check.go

@@ -0,0 +1,26 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// VcoHealthCheck is a nested struct in vpc response
+type VcoHealthCheck struct {
+	Dip      string `json:"Dip" xml:"Dip"`
+	Sip      string `json:"Sip" xml:"Sip"`
+	Enable   string `json:"Enable" xml:"Enable"`
+	Interval int    `json:"Interval" xml:"Interval"`
+	Retry    int    `json:"Retry" xml:"Retry"`
+	Status   string `json:"Status" xml:"Status"`
+}

+ 1 - 0
services/vpc/struct_vpc.go

@@ -27,6 +27,7 @@ type Vpc struct {
 	VRouterId       string                   `json:"VRouterId" xml:"VRouterId"`
 	Description     string                   `json:"Description" xml:"Description"`
 	IsDefault       bool                     `json:"IsDefault" xml:"IsDefault"`
+	NetworkAclNum   string                   `json:"NetworkAclNum" xml:"NetworkAclNum"`
 	ResourceGroupId string                   `json:"ResourceGroupId" xml:"ResourceGroupId"`
 	VSwitchIds      VSwitchIdsInDescribeVpcs `json:"VSwitchIds" xml:"VSwitchIds"`
 	UserCidrs       UserCidrsInDescribeVpcs  `json:"UserCidrs" xml:"UserCidrs"`

+ 12 - 11
services/vpc/struct_vpn_connection.go

@@ -17,15 +17,16 @@ package vpc
 
 // VpnConnection is a nested struct in vpc response
 type VpnConnection struct {
-	VpnConnectionId   string      `json:"VpnConnectionId" xml:"VpnConnectionId"`
-	CustomerGatewayId string      `json:"CustomerGatewayId" xml:"CustomerGatewayId"`
-	VpnGatewayId      string      `json:"VpnGatewayId" xml:"VpnGatewayId"`
-	Name              string      `json:"Name" xml:"Name"`
-	LocalSubnet       string      `json:"LocalSubnet" xml:"LocalSubnet"`
-	RemoteSubnet      string      `json:"RemoteSubnet" xml:"RemoteSubnet"`
-	CreateTime        int         `json:"CreateTime" xml:"CreateTime"`
-	EffectImmediately bool        `json:"EffectImmediately" xml:"EffectImmediately"`
-	Status            string      `json:"Status" xml:"Status"`
-	IkeConfig         IkeConfig   `json:"IkeConfig" xml:"IkeConfig"`
-	IpsecConfig       IpsecConfig `json:"IpsecConfig" xml:"IpsecConfig"`
+	VpnConnectionId   string         `json:"VpnConnectionId" xml:"VpnConnectionId"`
+	CustomerGatewayId string         `json:"CustomerGatewayId" xml:"CustomerGatewayId"`
+	VpnGatewayId      string         `json:"VpnGatewayId" xml:"VpnGatewayId"`
+	Name              string         `json:"Name" xml:"Name"`
+	LocalSubnet       string         `json:"LocalSubnet" xml:"LocalSubnet"`
+	RemoteSubnet      string         `json:"RemoteSubnet" xml:"RemoteSubnet"`
+	CreateTime        int            `json:"CreateTime" xml:"CreateTime"`
+	EffectImmediately bool           `json:"EffectImmediately" xml:"EffectImmediately"`
+	Status            string         `json:"Status" xml:"Status"`
+	IkeConfig         IkeConfig      `json:"IkeConfig" xml:"IkeConfig"`
+	IpsecConfig       IpsecConfig    `json:"IpsecConfig" xml:"IpsecConfig"`
+	VcoHealthCheck    VcoHealthCheck `json:"VcoHealthCheck" xml:"VcoHealthCheck"`
 }

+ 1 - 0
services/vpc/struct_vpn_gateway.go

@@ -32,4 +32,5 @@ type VpnGateway struct {
 	IpsecVpn          string `json:"IpsecVpn" xml:"IpsecVpn"`
 	SslVpn            string `json:"SslVpn" xml:"SslVpn"`
 	SslMaxConnections int    `json:"SslMaxConnections" xml:"SslMaxConnections"`
+	Tag               string `json:"Tag" xml:"Tag"`
 }

+ 21 - 0
services/vpc/struct_vpn_pbr_route_entries.go

@@ -0,0 +1,21 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// VpnPbrRouteEntries is a nested struct in vpc response
+type VpnPbrRouteEntries struct {
+	VpnPbrRouteEntry []VpnPbrRouteEntry `json:"VpnPbrRouteEntry" xml:"VpnPbrRouteEntry"`
+}

+ 27 - 0
services/vpc/struct_vpn_pbr_route_entry.go

@@ -0,0 +1,27 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// VpnPbrRouteEntry is a nested struct in vpc response
+type VpnPbrRouteEntry struct {
+	VpnInstanceId string `json:"VpnInstanceId" xml:"VpnInstanceId"`
+	RouteSource   string `json:"RouteSource" xml:"RouteSource"`
+	RouteDest     string `json:"RouteDest" xml:"RouteDest"`
+	NextHop       string `json:"NextHop" xml:"NextHop"`
+	Weight        int    `json:"Weight" xml:"Weight"`
+	CreateTime    int    `json:"CreateTime" xml:"CreateTime"`
+	State         string `json:"State" xml:"State"`
+}

+ 21 - 0
services/vpc/struct_vpn_route_entries.go

@@ -0,0 +1,21 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// VpnRouteEntries is a nested struct in vpc response
+type VpnRouteEntries struct {
+	VpnRouteEntry []VpnRouteEntry `json:"VpnRouteEntry" xml:"VpnRouteEntry"`
+}

+ 26 - 0
services/vpc/struct_vpn_route_entry.go

@@ -0,0 +1,26 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// VpnRouteEntry is a nested struct in vpc response
+type VpnRouteEntry struct {
+	VpnInstanceId string `json:"VpnInstanceId" xml:"VpnInstanceId"`
+	RouteDest     string `json:"RouteDest" xml:"RouteDest"`
+	NextHop       string `json:"NextHop" xml:"NextHop"`
+	Weight        int    `json:"Weight" xml:"Weight"`
+	CreateTime    int    `json:"CreateTime" xml:"CreateTime"`
+	State         string `json:"State" xml:"State"`
+}

+ 114 - 0
services/vpc/unassociate_network_acl.go

@@ -0,0 +1,114 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// UnassociateNetworkAcl invokes the vpc.UnassociateNetworkAcl API synchronously
+// api document: https://help.aliyun.com/api/vpc/unassociatenetworkacl.html
+func (client *Client) UnassociateNetworkAcl(request *UnassociateNetworkAclRequest) (response *UnassociateNetworkAclResponse, err error) {
+	response = CreateUnassociateNetworkAclResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// UnassociateNetworkAclWithChan invokes the vpc.UnassociateNetworkAcl API asynchronously
+// api document: https://help.aliyun.com/api/vpc/unassociatenetworkacl.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UnassociateNetworkAclWithChan(request *UnassociateNetworkAclRequest) (<-chan *UnassociateNetworkAclResponse, <-chan error) {
+	responseChan := make(chan *UnassociateNetworkAclResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.UnassociateNetworkAcl(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// UnassociateNetworkAclWithCallback invokes the vpc.UnassociateNetworkAcl API asynchronously
+// api document: https://help.aliyun.com/api/vpc/unassociatenetworkacl.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UnassociateNetworkAclWithCallback(request *UnassociateNetworkAclRequest, callback func(response *UnassociateNetworkAclResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *UnassociateNetworkAclResponse
+		var err error
+		defer close(result)
+		response, err = client.UnassociateNetworkAcl(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// UnassociateNetworkAclRequest is the request struct for api UnassociateNetworkAcl
+type UnassociateNetworkAclRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId      requests.Integer                 `position:"Query" name:"ResourceOwnerId"`
+	ClientToken          string                           `position:"Query" name:"ClientToken"`
+	NetworkAclId         string                           `position:"Query" name:"NetworkAclId"`
+	Resource             *[]UnassociateNetworkAclResource `position:"Query" name:"Resource"  type:"Repeated"`
+	ResourceOwnerAccount string                           `position:"Query" name:"ResourceOwnerAccount"`
+	OwnerId              requests.Integer                 `position:"Query" name:"OwnerId"`
+}
+
+// UnassociateNetworkAclResource is a repeated param struct in UnassociateNetworkAclRequest
+type UnassociateNetworkAclResource struct {
+	ResourceType string `name:"ResourceType"`
+	ResourceId   string `name:"ResourceId"`
+}
+
+// UnassociateNetworkAclResponse is the response struct for api UnassociateNetworkAcl
+type UnassociateNetworkAclResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateUnassociateNetworkAclRequest creates a request to invoke UnassociateNetworkAcl API
+func CreateUnassociateNetworkAclRequest() (request *UnassociateNetworkAclRequest) {
+	request = &UnassociateNetworkAclRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "UnassociateNetworkAcl", "vpc", "openAPI")
+	return
+}
+
+// CreateUnassociateNetworkAclResponse creates a response to parse from UnassociateNetworkAcl response
+func CreateUnassociateNetworkAclResponse() (response *UnassociateNetworkAclResponse) {
+	response = &UnassociateNetworkAclResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 135 - 0
services/vpc/update_network_acl_entries.go

@@ -0,0 +1,135 @@
+package vpc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// UpdateNetworkAclEntries invokes the vpc.UpdateNetworkAclEntries API synchronously
+// api document: https://help.aliyun.com/api/vpc/updatenetworkaclentries.html
+func (client *Client) UpdateNetworkAclEntries(request *UpdateNetworkAclEntriesRequest) (response *UpdateNetworkAclEntriesResponse, err error) {
+	response = CreateUpdateNetworkAclEntriesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// UpdateNetworkAclEntriesWithChan invokes the vpc.UpdateNetworkAclEntries API asynchronously
+// api document: https://help.aliyun.com/api/vpc/updatenetworkaclentries.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UpdateNetworkAclEntriesWithChan(request *UpdateNetworkAclEntriesRequest) (<-chan *UpdateNetworkAclEntriesResponse, <-chan error) {
+	responseChan := make(chan *UpdateNetworkAclEntriesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.UpdateNetworkAclEntries(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// UpdateNetworkAclEntriesWithCallback invokes the vpc.UpdateNetworkAclEntries API asynchronously
+// api document: https://help.aliyun.com/api/vpc/updatenetworkaclentries.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UpdateNetworkAclEntriesWithCallback(request *UpdateNetworkAclEntriesRequest, callback func(response *UpdateNetworkAclEntriesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *UpdateNetworkAclEntriesResponse
+		var err error
+		defer close(result)
+		response, err = client.UpdateNetworkAclEntries(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// UpdateNetworkAclEntriesRequest is the request struct for api UpdateNetworkAclEntries
+type UpdateNetworkAclEntriesRequest struct {
+	*requests.RpcRequest
+	ResourceOwnerId         requests.Integer                            `position:"Query" name:"ResourceOwnerId"`
+	EgressAclEntries        *[]UpdateNetworkAclEntriesEgressAclEntries  `position:"Query" name:"EgressAclEntries"  type:"Repeated"`
+	ClientToken             string                                      `position:"Query" name:"ClientToken"`
+	NetworkAclId            string                                      `position:"Query" name:"NetworkAclId"`
+	UpdateIngressAclEntries requests.Boolean                            `position:"Query" name:"UpdateIngressAclEntries"`
+	ResourceOwnerAccount    string                                      `position:"Query" name:"ResourceOwnerAccount"`
+	UpdateEgressAclEntries  requests.Boolean                            `position:"Query" name:"UpdateEgressAclEntries"`
+	OwnerId                 requests.Integer                            `position:"Query" name:"OwnerId"`
+	IngressAclEntries       *[]UpdateNetworkAclEntriesIngressAclEntries `position:"Query" name:"IngressAclEntries"  type:"Repeated"`
+}
+
+// UpdateNetworkAclEntriesEgressAclEntries is a repeated param struct in UpdateNetworkAclEntriesRequest
+type UpdateNetworkAclEntriesEgressAclEntries struct {
+	NetworkAclEntryName string `name:"NetworkAclEntryName"`
+	NetworkAclEntryId   string `name:"NetworkAclEntryId"`
+	Policy              string `name:"Policy"`
+	Protocol            string `name:"Protocol"`
+	DestinationCidrIp   string `name:"DestinationCidrIp"`
+	Port                string `name:"Port"`
+	EntryType           string `name:"EntryType"`
+	Description         string `name:"Description"`
+}
+
+// UpdateNetworkAclEntriesIngressAclEntries is a repeated param struct in UpdateNetworkAclEntriesRequest
+type UpdateNetworkAclEntriesIngressAclEntries struct {
+	NetworkAclEntryName string `name:"NetworkAclEntryName"`
+	NetworkAclEntryId   string `name:"NetworkAclEntryId"`
+	Policy              string `name:"Policy"`
+	Protocol            string `name:"Protocol"`
+	SourceCidrIp        string `name:"SourceCidrIp"`
+	Port                string `name:"Port"`
+	EntryType           string `name:"EntryType"`
+	Description         string `name:"Description"`
+}
+
+// UpdateNetworkAclEntriesResponse is the response struct for api UpdateNetworkAclEntries
+type UpdateNetworkAclEntriesResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateUpdateNetworkAclEntriesRequest creates a request to invoke UpdateNetworkAclEntries API
+func CreateUpdateNetworkAclEntriesRequest() (request *UpdateNetworkAclEntriesRequest) {
+	request = &UpdateNetworkAclEntriesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("Vpc", "2016-04-28", "UpdateNetworkAclEntries", "vpc", "openAPI")
+	return
+}
+
+// CreateUpdateNetworkAclEntriesResponse creates a response to parse from UpdateNetworkAclEntries response
+func CreateUpdateNetworkAclEntriesResponse() (response *UpdateNetworkAclEntriesResponse) {
+	response = &UpdateNetworkAclEntriesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}