This is an automated email from the ASF dual-hosted git repository.

weizhouapache pushed a commit to branch network-namespace
in repository https://gitbox.apache.org/repos/asf/cloudstack-extensions.git


The following commit(s) were added to refs/heads/network-namespace by this push:
     new a31cb32  Network namespace: minor updates on README.md
a31cb32 is described below

commit a31cb32276dbaac4eec7d6ae373da35b5ae61cd0
Author: Wei Zhou <[email protected]>
AuthorDate: Thu Jun 4 15:23:08 2026 +0200

    Network namespace: minor updates on README.md
---
 Network-Namespace/README.md                    | 51 ++++++++++++++++++++++----
 Network-Namespace/network-namespace-wrapper.sh |  4 ++
 Network-Namespace/network-namespace.sh         |  2 +-
 3 files changed, 49 insertions(+), 8 deletions(-)

diff --git a/Network-Namespace/README.md b/Network-Namespace/README.md
index 190b563..c15e147 100644
--- a/Network-Namespace/README.md
+++ b/Network-Namespace/README.md
@@ -1478,13 +1478,50 @@ name bridges as `br<eth>-<vlan>` and veth pairs as 
`vh-<vlan>-<id>` /
 
 ### Common keys inside `payload` (standard commands)
 
-| `payload` key | Commands | Description |
-|--------------|----------|-------------|
-| `vpc_id` | many | Present when the network belongs to a VPC; namespace 
becomes `cs-vpc-<vpcId>` |
-| `public_vlan` | `assign-ip`, `release-ip` | Public IP VLAN tag (for example 
`101`) |
-| `network_id` | most | Network ID — CHOSEN_ID for veth names is `<vpc_id>` 
when VPC, else `<network_id>` |
-| `extension_ip` | `implement-network`, `config-dhcp-subnet`, 
`config-dns-subnet`, `restore-network` | Dedicated IP for DHCP/DNS/metadata 
service when it differs from the gateway |
-| `current_details` | `ensure-network-device` | Previous selected-device JSON, 
used to preserve host affinity |
+#### Network-level fields
+
+| `payload` key | Description |
+|--------------|-------------|
+| `network_id` | Network ID — `CHOSEN_ID` for veth names is `<vpc_id>` when 
VPC, else `<network_id>` |
+| `vlan` | Guest VLAN tag |
+| `zone_id` | CloudStack zone ID |
+| `guest_type` | Guest network type: `"isolated"`, `"shared"`, or `"l2"`. The 
wrapper uses this to skip iptables / NAT / public-veth operations for `shared` 
networks. |
+| `gateway` | Guest network gateway |
+| `cidr` | Guest network CIDR |
+| `vpc_id` | Present when the network belongs to a VPC; namespace becomes 
`cs-vpc-<vpcId>` |
+| `network_ip6_gateway` | Guest IPv6 gateway, when configured |
+| `network_ip6_cidr` | Guest IPv6 CIDR, when configured |
+| `extension_ip` | IP for DHCP/DNS/metadata service — equals gateway when 
SourceNat/Gateway is active, otherwise a dedicated placeholder IP |
+| `dns` | Comma-separated DNS server list |
+| `domain` | Network domain suffix |
+| `current_details` | `ensure-network-device` only — previous selected-device 
JSON, used to preserve host affinity |
+
+#### NIC-level fields
+
+| `payload` key | Description |
+|--------------|-------------|
+| `nic_id` | CloudStack numeric NIC ID |
+| `nic_uuid` | NIC UUID — matches `external_ids:iface-id` written by the KVM 
agent |
+| `mac` | VM NIC MAC address |
+| `ip` | VM NIC IPv4 address |
+| `gateway` | VM NIC IPv4 gateway |
+| `netmask` | VM NIC IPv4 netmask |
+| `default_nic` | `"false"` for secondary NICs (gateway DHCP option 
suppressed) |
+| `device_id` | NIC device slot index |
+| `nic_ip6_address` | VM NIC IPv6 address, when configured |
+| `nic_ip6_gateway` | VM NIC IPv6 gateway, when available |
+| `nic_ip6_cidr` | VM NIC IPv6 CIDR, when available |
+
+#### Public-IP fields
+
+| `payload` key | Description |
+|--------------|-------------|
+| `public_ip` | Public IP address |
+| `public_vlan` | Public IP VLAN tag |
+| `public_gateway` | Gateway of the public IP segment |
+| `public_cidr` | CIDR of the public IP |
+| `source_nat` | `"true"` when this IP is the source-NAT IP |
+| `private_ip` | VM private IP (NAT target) |
 
 ### Action parameters (custom-action only)
 
diff --git a/Network-Namespace/network-namespace-wrapper.sh 
b/Network-Namespace/network-namespace-wrapper.sh
index 4b653fc..0780600 100755
--- a/Network-Namespace/network-namespace-wrapper.sh
+++ b/Network-Namespace/network-namespace-wrapper.sh
@@ -467,6 +467,7 @@ parse_args() {
 
     NETWORK_ID=$(_payload_json_get "${payload_file}" "payload.network_id")
     GUEST_TYPE=$(_payload_json_get "${payload_file}" "payload.guest_type")
+    ZONE_ID=$(_payload_json_get "${payload_file}" "payload.zone_id")
     VPC_ID=$(_payload_json_get "${payload_file}" "payload.vpc_id")
     VLAN=$(_payload_json_get "${payload_file}" "payload.vlan")
     GATEWAY=$(_payload_json_get "${payload_file}" "payload.gateway")
@@ -484,6 +485,9 @@ parse_args() {
     HOSTNAME=$(_payload_json_get "${payload_file}" "payload.hostname")
     DNS_SERVER=$(_payload_json_get "${payload_file}" "payload.dns")
     NIC_ID=$(_payload_json_get "${payload_file}" "payload.nic_id")
+    NIC_UUID=$(_payload_json_get "${payload_file}" "payload.nic_uuid")
+    NETMASK=$(_payload_json_get "${payload_file}" "payload.netmask")
+    DEVICE_ID=$(_payload_json_get "${payload_file}" "payload.device_id")
     VM_IP=$(_payload_json_get "${payload_file}" "payload.ip")
     USERDATA=$(_payload_json_get "${payload_file}" "payload.userdata")
     PASSWORD=$(_payload_json_get "${payload_file}" "payload.password")
diff --git a/Network-Namespace/network-namespace.sh 
b/Network-Namespace/network-namespace.sh
index 137f5ee..9e11e6b 100755
--- a/Network-Namespace/network-namespace.sh
+++ b/Network-Namespace/network-namespace.sh
@@ -340,7 +340,7 @@ if [ "${COMMAND}" = "ensure-network-device" ]; then
 
     # Namespace names must match those used by the wrapper on the KVM host.
     # VPC networks share one namespace per VPC (cs-vpc-<vpcId>);
-    # standalone isolated networks get their own namespace 
(cs-net-<networkId>).
+    # standalone networks (Isolated and Shared) each get their own namespace 
(cs-net-<networkId>).
     if [ -n "${VPC_ID}" ]; then
         NAMESPACE="cs-vpc-${VPC_ID}"
     else

Reply via email to