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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.