# ModifySubnetStackType

## 1. 接口描述

本接口(ModifySubnetStackType)用于修改指定子网的 IP 地址堆栈类型（IPv4 / IPv4\_IPv6 / IPv6）。变更为双栈或纯 IPv6 时须配置 IPv6 类型及对应的 CIDR 地址块。

{% hint style="info" %}
**注意事项**

* 当前子网的堆栈类型只能从`IPv4`切换为`IPv4_IPv6`。切换后，将得到一个IPv6地址段。
* 注意切换后，操作不可逆。
  {% endhint %}

## 2. 请求参数

以下请求参数列表仅列出了接口中需要的请求参数

| 参数名称            | 必选 | 类型                                                                                                          | 描述                                                                                                                                                                                      |
| --------------- | -- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| subnetId        | 是  | String                                                                                                      | 要操作的子网的ID。                                                                                                                                                                              |
| ipv6Type        | 是  | [IPv6Type](https://docs.console.zenlayer.com/api-reference/cn/compute/datastructure#ipv6type)               | IPv6的类型。                                                                                                                                                                                |
| stackType       | 否  | [SubnetStackType](https://docs.console.zenlayer.com/api-reference/cn/compute/datastructure#subnetstacktype) | <p>子网堆栈类型。</p><p>目前只支持<code>IPv4\_IPv6</code>。</p><p>默认值：IPv4\_IPv6</p>                                                                                                                 |
| ipv6CidrBlockId | 否  | String                                                                                                      | <p>公网IPv6 CIDR ID。</p><p>该字段仅当<code>ipv6Type</code>是公网(<code>Public</code>)时允许指定。</p><p>如果不指定，将从系统默认IP池里分配。</p>                                                                         |
| ipv6MaskLength  | 否  | Integer                                                                                                     | <p>分配给虚拟机（VM）的IPv6 CIDR前缀的大小。</p><p>该参数必须与<code>ipv6CidrBlockId</code>参数配合使用。</p><p>当未显式传递时，默认值为96。</p><p>最小必须大于或等于指定<code>ipv6CidrBlockId</code>的前缀，最大不能超过96。</p><p>可选值范围：\[-, 96]</p> |

## 3. 响应结果

| 参数名称          | 类型     | 描述                                                       |
| ------------- | ------ | -------------------------------------------------------- |
| requestId     | String | <p>唯一请求 ID。</p><p>每次请求都会返回。定位问题时需要提供该次请求的 requestId。</p> |
| ipv6CidrBlock | String | 分配的IPv6地址段。                                              |

## 4. 代码示例

{% tabs %}
{% tab title="示例" %}
**1. 修改子网的堆栈类型。并指定公网IPv6是内网。**

```json
POST /api/v2/zec HTTP/1.1
Host: console.zenlayer.com
Content-Type: application/json
X-ZC-Action: ModifySubnetStackType
<Common Request Params>

Request：
{
  "subnetId": "XXX",
  "stackType": "IPv4_IPv6",
  "ipv6Type": "Private"
}

Response：
{
  "requestId": "T05992D0C-7E8B-4047-B0C0-780F2CD549D3",
  "response": {
    "requestId": "T05992D0C-7E8B-4047-B0C0-780F2CD549D3",
    "ipv6CidrBlock": "f0xxxx:xx:xxx::/64"
  }
}
```

{% endtab %}
{% endtabs %}

## 5. 开发者工具

Zenlayer Cloud API 2.0 提供了配套的[开发工具集（SDK）](https://docs.console.zenlayer.com/api-reference/cn/api-introduction/toolkit)，未来会陆续支持更多开发语言，方便快速接入和使用Zenlayer的产品和服务。

## 6. 错误码

下面包含业务逻辑中遇到的错误码，其他错误码见[公共错误码](https://docs.console.zenlayer.com/api-reference/cn/api-introduction/instruction/commonerrorcode)

| HTTP状态码 | 错误码                                                | 说明                    |
| ------- | -------------------------------------------------- | --------------------- |
| 400     | INVALID\_CIDR\_BLOCK\_STATUS                       | CIDR地址段状态不合法。         |
| 404     | INVALID\_CIDR\_IPV6\_NOT\_FOUND                    | IPv6 CIDR地址块不存在       |
| 400     | INVALID\_CIDR\_REGION\_MISMATCH                    | 子网区域与客户ipv6网段区域不一致。   |
| 400     | INVALID\_MAST\_LENGTH                              | IPv6地址掩码值需大于子网ipv6网段。 |
| 404     | INVALID\_SUBNET\_NOT\_FOUND                        | 子网不存在。                |
| 404     | INVALID\_VPC\_NOT\_FOUND                           | VPC不存在。               |
| 404     | INVALID\_ZONE\_NOT\_FOUND                          | 可用区不存在。               |
| 400     | OPERATION\_DENIED\_NO\_AVAILABLE\_CIDR             | 无空余的CIDR地址段。          |
| 400     | OPERATION\_DENIED\_REGION\_NOT\_SUPPORT\_PUB\_IPV6 | 指定的区域不支持公网IPV6。       |
| 400     | OPERATION\_DENIED\_SUBNET\_TYPE\_NOT\_SUPPORT      | 子网堆栈类型不支持。            |
| 400     | OPERATION\_DENIED\_VPC\_NOT\_SUPPORT\_PRI\_IPV6    | 指定的VPC不支持内网IPV6。      |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.console.zenlayer.com/api-reference/cn/compute/zec/vpc-network/modifysubnetstacktype.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
