Skip to content

Commit 078e09b

Browse files
committed
Add support for dual-stack external addressing
- Adds enum for tracking the external IP addresses for an instance or service, which includes the three fields that were previously separate: SNAT, ephemeral, and list of floating addresses. - Makes the previous source NAT config type IP address specific, with a "generic" variant for services. This is a bit lazy, but we can lift the IP version out of the contained IP address and into the source NAT type itself in the future if we need to. - Add new version of the sled-agent API with these new types, plus conversions with the previous version - Completely handle dual-stack OPTE ports, closes #9247 - Closes #9318
1 parent f65b0e4 commit 078e09b

File tree

40 files changed

+11806
-792
lines changed

40 files changed

+11806
-792
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

clients/nexus-lockstep-client/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,11 @@ impl From<omicron_common::address::Ipv6Range> for types::Ipv6Range {
132132
}
133133
}
134134

135-
impl From<&omicron_common::api::internal::shared::SourceNatConfig>
136-
for types::SourceNatConfig
135+
impl From<&omicron_common::api::internal::shared::SourceNatConfigGeneric>
136+
for types::SourceNatConfigGeneric
137137
{
138138
fn from(
139-
r: &omicron_common::api::internal::shared::SourceNatConfig,
139+
r: &omicron_common::api::internal::shared::SourceNatConfigGeneric,
140140
) -> Self {
141141
let (first_port, last_port) = r.port_range_raw();
142142
Self { ip: r.ip, first_port, last_port }

clients/sled-agent-client/src/lib.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ progenitor::generate_api!(
5656
DiskManagementError = omicron_common::disk::DiskManagementError,
5757
DiskVariant = omicron_common::disk::DiskVariant,
5858
ExternalIpGatewayMap = omicron_common::api::internal::shared::ExternalIpGatewayMap,
59+
ExternalIpConfig = omicron_common::api::internal::shared::ExternalIpConfig,
60+
ExternalIpv4Config = omicron_common::api::internal::shared::ExternalIpv4Config,
61+
ExternalIpv6Config = omicron_common::api::internal::shared::ExternalIpv6Config,
5962
Generation = omicron_common::api::external::Generation,
6063
Hostname = omicron_common::api::external::Hostname,
6164
ImportExportPolicy = omicron_common::api::external::ImportExportPolicy,
@@ -83,7 +86,7 @@ progenitor::generate_api!(
8386
RouterTarget = omicron_common::api::internal::shared::RouterTarget,
8487
RouterVersion = omicron_common::api::internal::shared::RouterVersion,
8588
SledRole = nexus_sled_agent_shared::inventory::SledRole,
86-
SourceNatConfig = omicron_common::api::internal::shared::SourceNatConfig,
89+
SourceNatConfigGeneric = omicron_common::api::internal::shared::SourceNatConfigGeneric,
8790
SwitchLocation = omicron_common::api::external::SwitchLocation,
8891
Vni = omicron_common::api::external::Vni,
8992
VpcFirewallIcmpFilter = omicron_common::api::external::VpcFirewallIcmpFilter,

0 commit comments

Comments
 (0)