oxidecomputer / oxidecomputer/omicron

Cannot attach both IPv4 and IPv6 IP addresses to internet gateway

Open
#10,943 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
572
Forks
97
Avg merge
2d 12h
Merged PRs (30d)
96

Description

Internet gateways support IP address attachments and IP pool attachments. Only a single IP address can be attached to an internet gateway whereas multiple IP pools can be attached, even the same IP pool multiple times as described in https://github.com/oxidecomputer/omicron/issues/7413.

Without the ability to attach multiple IP addresses, users cannot create a dual-stack internet gateway without using IP pool attachments.

> oxide internet-gateway address create --gateway example --vpc example --project example --name v4-ip --description 'An IPv4 attachment.' --address '172.21.254.99'
{
  "address": "172.21.254.99",
  "description": "An IPv4 attachment.",
  "id": "920a2fd3-1a8e-4968-b6af-cf0c387f2a0c",
  "internet_gateway_id": "4b0cd948-23ef-485a-825b-ef46d7c19c2a",
  "name": "v4-ip",
  "time_created": "2026-07-28T23:52:13.153324Z",
  "time_modified": "2026-07-28T23:52:13.153324Z"
}

> oxide internet-gateway address create --gateway example --vpc example --project example --name v6-ip --description 'An IPv6 attachment.' --address 'fd17:2160:0000:0001::5'
error
Error Response: status: 400 Bad Request; headers: {"content-type": "application/json", "x-request-id": "97d0a8fb-13ca-4792-ab89-12102d274b49", "content-length": "167", "date": "Tue, 28 Jul 2026 23:53:49 GMT"}; value: Error { error_code: Some("ObjectAlreadyExists"), message: "already exists: internet-gateway-ip-address \"v6-ip\"", request_id: "97d0a8fb-13ca-4792-ab89-12102d274b49" }

This is likely due to the fact that internet gateways predated the dual-stack network interface and IP pool work to introduce IPv6 and have not yet been updated. Let's fix that.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the oxide internet-gateway address create commands shown in the issue, then trace the internet-gateway IP-address attachment validation and related API entry points. Done means an internet gateway accepts both an IPv4 and an IPv6 address attachment, while the existing attachment behavior remains covered by tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
api, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.