* [pve-devel] [PATCH network v2] sdn: write frr config if the frr.conf.local file exists
@ 2025-10-02 13:09 Gabriel Goller
2025-11-18 12:18 ` Thomas Lamprecht
0 siblings, 1 reply; 3+ messages in thread
From: Gabriel Goller @ 2025-10-02 13:09 UTC (permalink / raw)
To: pve-devel
Currently we check if there is a fabric or a controller existing to
decide if we write the frr.conf file. Also add a check if the
frr.conf.local exists. This way it's possible to have a custom config in
the frr.conf.local file without any SDN objects configured and still
be able to apply the config.
By not checking the content we can also clear the frr config by clearing
the frr.conf.local file.
Reported-by: Hannes Dürr <h.duerr@proxmox.com>
Signed-off-by: Gabriel Goller <g.goller@proxmox.com>
Reviewed-by: Stefan Hanreich <s.hanreich@proxmox.com>
Tested-by: Stefan Hanreich <s.hanreich@proxmox.com>
---
Changelog:
v2, thanks @Stefan:
* use the new local_frr_config_exists helper instead if `if -e` before
reading the local config.
src/PVE/Network/SDN.pm | 3 ++-
src/PVE/Network/SDN/Frr.pm | 20 ++++++++++++++++++--
2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/src/PVE/Network/SDN.pm b/src/PVE/Network/SDN.pm
index f2ecd4ab7318..e867d1ab886e 100644
--- a/src/PVE/Network/SDN.pm
+++ b/src/PVE/Network/SDN.pm
@@ -123,8 +123,9 @@ sub running_config_has_frr {
# both can be empty if the SDN configuration was never applied
my $controllers = $running_config->{controllers}->{ids} // {};
my $fabrics = $running_config->{fabrics}->{ids} // {};
+ my $local_frr_config = PVE::Network::SDN::Frr::local_frr_config_exists();
- return %$controllers || %$fabrics;
+ return %$controllers || %$fabrics || $local_frr_config;
}
sub pending_config {
diff --git a/src/PVE/Network/SDN/Frr.pm b/src/PVE/Network/SDN/Frr.pm
index b607b32c248d..7e4a9ac1258d 100644
--- a/src/PVE/Network/SDN/Frr.pm
+++ b/src/PVE/Network/SDN/Frr.pm
@@ -32,6 +32,22 @@ string that is a FRR configuration line.
use PVE::RESTEnvironment qw(log_warn);
use PVE::Tools qw(file_get_contents file_set_contents run_command);
+my $FRR_CONF_LOCAL_FILE = "/etc/frr/frr.conf.local";
+
+=head3 local_frr_config_exists
+
+Returns true if the `/etc/frr/frr.conf.local` file exists, otherwise false.
+
+=cut
+
+sub local_frr_config_exists {
+ if (-e $FRR_CONF_LOCAL_FILE) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
=head3 read_local_frr_config
Returns the contents of `/etc/frr/frr.conf.local` as a string if it exists, otherwise undef.
@@ -39,8 +55,8 @@ Returns the contents of `/etc/frr/frr.conf.local` as a string if it exists, othe
=cut
sub read_local_frr_config {
- if (-e "/etc/frr/frr.conf.local") {
- return file_get_contents("/etc/frr/frr.conf.local");
+ if (local_frr_config_exists()) {
+ return file_get_contents($FRR_CONF_LOCAL_FILE);
}
}
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [pve-devel] [PATCH network v2] sdn: write frr config if the frr.conf.local file exists
2025-10-02 13:09 [pve-devel] [PATCH network v2] sdn: write frr config if the frr.conf.local file exists Gabriel Goller
@ 2025-11-18 12:18 ` Thomas Lamprecht
2025-11-18 12:35 ` Gabriel Goller
0 siblings, 1 reply; 3+ messages in thread
From: Thomas Lamprecht @ 2025-11-18 12:18 UTC (permalink / raw)
To: pve-devel, Gabriel Goller
On Thu, 02 Oct 2025 15:09:49 +0200, Gabriel Goller wrote:
> Currently we check if there is a fabric or a controller existing to
> decide if we write the frr.conf file. Also add a check if the
> frr.conf.local exists. This way it's possible to have a custom config in
> the frr.conf.local file without any SDN objects configured and still
> be able to apply the config.
> By not checking the content we can also clear the frr config by clearing
> the frr.conf.local file.
>
> [...]
Applied, with small code clean-up as follow-up (please recheck!), thanks!
[1/1] sdn: write frr config if the frr.conf.local file exists
commit: 76ce7859e66e2709f895157154005607adce5004
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [pve-devel] [PATCH network v2] sdn: write frr config if the frr.conf.local file exists
2025-11-18 12:18 ` Thomas Lamprecht
@ 2025-11-18 12:35 ` Gabriel Goller
0 siblings, 0 replies; 3+ messages in thread
From: Gabriel Goller @ 2025-11-18 12:35 UTC (permalink / raw)
To: Thomas Lamprecht; +Cc: pve-devel
On 18.11.2025 13:18, Thomas Lamprecht wrote:
> On Thu, 02 Oct 2025 15:09:49 +0200, Gabriel Goller wrote:
> > Currently we check if there is a fabric or a controller existing to
> > decide if we write the frr.conf file. Also add a check if the
> > frr.conf.local exists. This way it's possible to have a custom config in
> > the frr.conf.local file without any SDN objects configured and still
> > be able to apply the config.
> > By not checking the content we can also clear the frr config by clearing
> > the frr.conf.local file.
> >
> > [...]
>
> Applied, with small code clean-up as follow-up (please recheck!), thanks!
>
> [1/1] sdn: write frr config if the frr.conf.local file exists
> commit: 76ce7859e66e2709f895157154005607adce5004
LGTM!
thanks for applying!
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-11-18 12:35 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-10-02 13:09 [pve-devel] [PATCH network v2] sdn: write frr config if the frr.conf.local file exists Gabriel Goller
2025-11-18 12:18 ` Thomas Lamprecht
2025-11-18 12:35 ` Gabriel Goller
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.