From: "Rémi PAETA" <remi.paeta@comaite.com>
To: pve-devel@lists.proxmox.com
Subject: [RFC PATCH network 08/16] sdn: subnets: refuse gateway, snat and dhcp on ovn zones
Date: Tue, 13 Oct 2026 14:14:24 +0200 [thread overview]
Message-ID: <20261013121432.2642979-9-remi.paeta@comaite.com> (raw)
In-Reply-To: <20261013121432.2642979-1-remi.paeta@comaite.com>
OVN zones do not route nor serve DHCP yet, so a subnet gateway, SNAT or
DHCP ranges would have no effect on them. Refuse them instead of
silently ignoring them.
Signed-off-by: Rémi PAETA <remi.paeta@comaite.com>
---
src/PVE/Network/SDN/SubnetPlugin.pm | 9 +++++++++
src/test/run_test_ovn.pl | 12 ++++++++++++
2 files changed, 21 insertions(+)
diff --git a/src/PVE/Network/SDN/SubnetPlugin.pm b/src/PVE/Network/SDN/SubnetPlugin.pm
index e2a0e50..7de40aa 100644
--- a/src/PVE/Network/SDN/SubnetPlugin.pm
+++ b/src/PVE/Network/SDN/SubnetPlugin.pm
@@ -217,6 +217,15 @@ sub on_update_hook {
$mac = $vnet->{mac};
}
+ # OVN zones neither route nor serve DHCP (yet), so these options would have no effect
+ if (($zone->{type} // '') eq 'ovn') {
+ for my $option ('gateway', 'snat', 'dhcp-range') {
+ my $value = $subnet->{$option};
+ next if !$value || (ref($value) eq 'ARRAY' && !@$value);
+ raise_param_exc({ $option => "$option is not supported on OVN zones" });
+ }
+ }
+
my $pointopoint = Net::IP::ip_is_ipv4($gateway) && $mask == 32;
#for /32 pointopoint, we allow gateway outside the subnet
diff --git a/src/test/run_test_ovn.pl b/src/test/run_test_ovn.pl
index 9f191b3..cb36a0f 100755
--- a/src/test/run_test_ovn.pl
+++ b/src/test/run_test_ovn.pl
@@ -12,6 +12,7 @@ use Test::MockModule;
use PVE::Network::SDN;
use PVE::Network::SDN::Ovn;
use PVE::Network::SDN::Controllers::OvnPlugin;
+use PVE::Network::SDN::SubnetPlugin;
use PVE::Network::SDN::Zones::OvnPlugin;
my $controller = {
@@ -511,6 +512,17 @@ eval {
};
like($@, qr/isolate-ports is not supported/, 'vnet_update_hook: isolate-ports refused');
+for my $option (['gateway', '10.0.0.1'], ['snat', 1], ['dhcp-range', ['start-address=a']]) {
+ eval {
+ PVE::Network::SDN::SubnetPlugin->on_update_hook(
+ { type => 'ovn' },
+ 'zone1-10.0.0.0-24',
+ { cidr => '10.0.0.0/24', mask => 24, $option->[0] => $option->[1] },
+ );
+ };
+ like($@, qr/$option->[0] is not supported on OVN zones/, "subnet: $option->[0] refused");
+}
+
# chassis
is(
--
2.47.3
next prev parent reply other threads:[~2026-10-13 12:22 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-09 9:22 [RFC] sdn: OVN zone and controller plugins Rémi PAETA
2026-10-13 12:14 ` [RFC PATCH ve-rs/network/manager/docs 00/16] sdn: add " Rémi PAETA
2026-10-13 12:14 ` [RFC PATCH ve-rs 01/16] ve-config: sdn: add ovn zone type Rémi PAETA
2026-10-13 12:14 ` SPAM: [RFC PATCH network 02/16] sdn: controllers: add ovn plugin Rémi PAETA
2026-10-13 12:14 ` [RFC PATCH network 03/16] sdn: zones: " Rémi PAETA
2026-10-13 12:14 ` [RFC PATCH network 04/16] sdn: ovn: sync the northbound database on reload Rémi PAETA
2026-10-13 12:14 ` [RFC PATCH network 05/16] sdn: ovn: configure the chassis on boot and on network reload Rémi PAETA
2026-10-13 12:14 ` [RFC PATCH network 06/16] sdn: ovn: add port security Rémi PAETA
2026-10-13 12:14 ` [RFC PATCH network 07/16] sdn: ovn: allow overriding the port security per vnet Rémi PAETA
2026-10-13 12:14 ` Rémi PAETA [this message]
2026-10-13 12:14 ` [RFC PATCH network 09/16] sdn: ovn: support ssl connections to the databases Rémi PAETA
2026-10-13 12:14 ` [RFC PATCH network 10/16] sdn: ovn: bind guest ports to the chassis of their node Rémi PAETA
2026-10-13 12:14 ` [RFC PATCH manager 11/16] ui: sdn: controller selector: allow filtering by controller type Rémi PAETA
2026-10-13 12:14 ` [RFC PATCH manager 12/16] ui: sdn: add ovn controller Rémi PAETA
2026-10-13 12:14 ` [RFC PATCH manager 13/16] ui: sdn: add ovn zone Rémi PAETA
2026-10-13 12:14 ` [RFC PATCH manager 14/16] ui: sdn: vnet: add port security for ovn zones Rémi PAETA
2026-10-13 12:14 ` [RFC PATCH manager 15/16] ui: sdn: vnet: disable isolate ports " Rémi PAETA
2026-10-13 12:14 ` [RFC PATCH docs 16/16] sdn: document ovn zones and controllers Rémi PAETA
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261013121432.2642979-9-remi.paeta@comaite.com \
--to=remi.paeta@comaite.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox