public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH pve-network] sdn: add missing new-line at the end of frr config and update tests
@ 2026-01-21  9:34 Hannes Laimer
  2026-01-21 10:56 ` Gabriel Goller
  2026-01-21 17:00 ` [pve-devel] applied: " Fiona Ebner
  0 siblings, 2 replies; 3+ messages in thread
From: Hannes Laimer @ 2026-01-21  9:34 UTC (permalink / raw)
  To: pve-devel

We currently generate the FRR config file without a `\n` at the end, it
works, but is technically not correct in UNIX. Most importantly when
editing tests vim would add one when saving, this would then not match
what we generate.

Signed-off-by: Hannes Laimer <h.laimer@proxmox.com>
---
 src/PVE/Network/SDN/Frr.pm                                      | 2 +-
 .../zones/evpn/advertise_subnets/expected_controller_config     | 2 +-
 .../evpn/disable_arp_nd_suppression/expected_controller_config  | 2 +-
 src/test/zones/evpn/ebgp/expected_controller_config             | 2 +-
 src/test/zones/evpn/ebgp_loopback/expected_controller_config    | 2 +-
 src/test/zones/evpn/exitnode/expected_controller_config         | 2 +-
 .../evpn/exitnode_local_routing/expected_controller_config      | 2 +-
 src/test/zones/evpn/exitnode_primary/expected_controller_config | 2 +-
 src/test/zones/evpn/exitnode_snat/expected_controller_config    | 2 +-
 .../zones/evpn/exitnodenullroute/expected_controller_config     | 2 +-
 src/test/zones/evpn/ipv4/expected_controller_config             | 2 +-
 src/test/zones/evpn/ipv4ipv6/expected_controller_config         | 2 +-
 .../zones/evpn/ipv4ipv6nogateway/expected_controller_config     | 2 +-
 src/test/zones/evpn/ipv6/expected_controller_config             | 2 +-
 src/test/zones/evpn/ipv6underlay/expected_controller_config     | 2 +-
 src/test/zones/evpn/isis/expected_controller_config             | 2 +-
 src/test/zones/evpn/isis/interfaces                             | 2 +-
 src/test/zones/evpn/isis_loopback/expected_controller_config    | 2 +-
 src/test/zones/evpn/isis_loopback/interfaces                    | 2 +-
 src/test/zones/evpn/isis_standalone/expected_controller_config  | 2 +-
 src/test/zones/evpn/isis_standalone/interfaces                  | 2 +-
 src/test/zones/evpn/multipath_relax/expected_controller_config  | 2 +-
 src/test/zones/evpn/multiplezones/expected_controller_config    | 2 +-
 .../zones/evpn/openfabric_fabric/expected_controller_config     | 2 +-
 src/test/zones/evpn/ospf_fabric/expected_controller_config      | 2 +-
 src/test/zones/evpn/rt_import/expected_controller_config        | 2 +-
 src/test/zones/evpn/vxlanport/expected_controller_config        | 2 +-
 src/test/zones/simple/hetzner/interfaces                        | 2 +-
 28 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/src/PVE/Network/SDN/Frr.pm b/src/PVE/Network/SDN/Frr.pm
index 221e562..6d5f430 100644
--- a/src/PVE/Network/SDN/Frr.pm
+++ b/src/PVE/Network/SDN/Frr.pm
@@ -239,7 +239,7 @@ sub raw_config_to_string {
         "!", "line vty", "!",
     );
 
-    return join("\n", @final_config);
+    return join("\n", @final_config) . "\n";
 }
 
 =head3 raw_config_to_string(\@raw_config)
diff --git a/src/test/zones/evpn/advertise_subnets/expected_controller_config b/src/test/zones/evpn/advertise_subnets/expected_controller_config
index 93dd23c..10a601e 100644
--- a/src/test/zones/evpn/advertise_subnets/expected_controller_config
+++ b/src/test/zones/evpn/advertise_subnets/expected_controller_config
@@ -55,4 +55,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/disable_arp_nd_suppression/expected_controller_config b/src/test/zones/evpn/disable_arp_nd_suppression/expected_controller_config
index 8d265c8..d67552a 100644
--- a/src/test/zones/evpn/disable_arp_nd_suppression/expected_controller_config
+++ b/src/test/zones/evpn/disable_arp_nd_suppression/expected_controller_config
@@ -42,4 +42,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/ebgp/expected_controller_config b/src/test/zones/evpn/ebgp/expected_controller_config
index 8e2becc..ad97539 100644
--- a/src/test/zones/evpn/ebgp/expected_controller_config
+++ b/src/test/zones/evpn/ebgp/expected_controller_config
@@ -59,4 +59,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/ebgp_loopback/expected_controller_config b/src/test/zones/evpn/ebgp_loopback/expected_controller_config
index 4a17a97..22f1b10 100644
--- a/src/test/zones/evpn/ebgp_loopback/expected_controller_config
+++ b/src/test/zones/evpn/ebgp_loopback/expected_controller_config
@@ -71,4 +71,4 @@ exit
 ip protocol bgp route-map correct_src
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/exitnode/expected_controller_config b/src/test/zones/evpn/exitnode/expected_controller_config
index 99aca65..160a0a0 100644
--- a/src/test/zones/evpn/exitnode/expected_controller_config
+++ b/src/test/zones/evpn/exitnode/expected_controller_config
@@ -75,4 +75,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/exitnode_local_routing/expected_controller_config b/src/test/zones/evpn/exitnode_local_routing/expected_controller_config
index af4be8c..50f226b 100644
--- a/src/test/zones/evpn/exitnode_local_routing/expected_controller_config
+++ b/src/test/zones/evpn/exitnode_local_routing/expected_controller_config
@@ -61,4 +61,4 @@ exit
 ip route 10.0.0.0/24 10.255.255.2 xvrf_myzone
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/exitnode_primary/expected_controller_config b/src/test/zones/evpn/exitnode_primary/expected_controller_config
index 586327b..1397160 100644
--- a/src/test/zones/evpn/exitnode_primary/expected_controller_config
+++ b/src/test/zones/evpn/exitnode_primary/expected_controller_config
@@ -77,4 +77,4 @@ route-map MAP_VTEP_OUT permit 3
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/exitnode_snat/expected_controller_config b/src/test/zones/evpn/exitnode_snat/expected_controller_config
index 99aca65..160a0a0 100644
--- a/src/test/zones/evpn/exitnode_snat/expected_controller_config
+++ b/src/test/zones/evpn/exitnode_snat/expected_controller_config
@@ -75,4 +75,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/exitnodenullroute/expected_controller_config b/src/test/zones/evpn/exitnodenullroute/expected_controller_config
index 4586881..781e6e2 100644
--- a/src/test/zones/evpn/exitnodenullroute/expected_controller_config
+++ b/src/test/zones/evpn/exitnodenullroute/expected_controller_config
@@ -118,4 +118,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/ipv4/expected_controller_config b/src/test/zones/evpn/ipv4/expected_controller_config
index 8d265c8..d67552a 100644
--- a/src/test/zones/evpn/ipv4/expected_controller_config
+++ b/src/test/zones/evpn/ipv4/expected_controller_config
@@ -42,4 +42,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/ipv4ipv6/expected_controller_config b/src/test/zones/evpn/ipv4ipv6/expected_controller_config
index 8d265c8..d67552a 100644
--- a/src/test/zones/evpn/ipv4ipv6/expected_controller_config
+++ b/src/test/zones/evpn/ipv4ipv6/expected_controller_config
@@ -42,4 +42,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/ipv4ipv6nogateway/expected_controller_config b/src/test/zones/evpn/ipv4ipv6nogateway/expected_controller_config
index 8d265c8..d67552a 100644
--- a/src/test/zones/evpn/ipv4ipv6nogateway/expected_controller_config
+++ b/src/test/zones/evpn/ipv4ipv6nogateway/expected_controller_config
@@ -42,4 +42,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/ipv6/expected_controller_config b/src/test/zones/evpn/ipv6/expected_controller_config
index 8d265c8..d67552a 100644
--- a/src/test/zones/evpn/ipv6/expected_controller_config
+++ b/src/test/zones/evpn/ipv6/expected_controller_config
@@ -42,4 +42,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/ipv6underlay/expected_controller_config b/src/test/zones/evpn/ipv6underlay/expected_controller_config
index 123964e..6f453be 100644
--- a/src/test/zones/evpn/ipv6underlay/expected_controller_config
+++ b/src/test/zones/evpn/ipv6underlay/expected_controller_config
@@ -42,4 +42,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/isis/expected_controller_config b/src/test/zones/evpn/isis/expected_controller_config
index 913fb2b..e47afaa 100644
--- a/src/test/zones/evpn/isis/expected_controller_config
+++ b/src/test/zones/evpn/isis/expected_controller_config
@@ -55,4 +55,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/isis/interfaces b/src/test/zones/evpn/isis/interfaces
index 2426e0f..66bb826 100644
--- a/src/test/zones/evpn/isis/interfaces
+++ b/src/test/zones/evpn/isis/interfaces
@@ -4,4 +4,4 @@ iface vmbr0 inet static
 	gateway 192.168.0.254
         bridge-ports eth0
         bridge-stp off
-        bridge-fd 0
\ No newline at end of file
+        bridge-fd 0
diff --git a/src/test/zones/evpn/isis_loopback/expected_controller_config b/src/test/zones/evpn/isis_loopback/expected_controller_config
index 4f77b4d..487ca86 100644
--- a/src/test/zones/evpn/isis_loopback/expected_controller_config
+++ b/src/test/zones/evpn/isis_loopback/expected_controller_config
@@ -56,4 +56,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/isis_loopback/interfaces b/src/test/zones/evpn/isis_loopback/interfaces
index 41ae25f..ba248a1 100644
--- a/src/test/zones/evpn/isis_loopback/interfaces
+++ b/src/test/zones/evpn/isis_loopback/interfaces
@@ -9,4 +9,4 @@ iface vmbr0 inet static
 auto dummy1
 iface dummy1 inet static
         address 10.0.0.1/32
-        link-type dummy
\ No newline at end of file
+        link-type dummy
diff --git a/src/test/zones/evpn/isis_standalone/expected_controller_config b/src/test/zones/evpn/isis_standalone/expected_controller_config
index 7e99517..92a6f38 100644
--- a/src/test/zones/evpn/isis_standalone/expected_controller_config
+++ b/src/test/zones/evpn/isis_standalone/expected_controller_config
@@ -19,4 +19,4 @@ router isis isis1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/isis_standalone/interfaces b/src/test/zones/evpn/isis_standalone/interfaces
index 41ae25f..ba248a1 100644
--- a/src/test/zones/evpn/isis_standalone/interfaces
+++ b/src/test/zones/evpn/isis_standalone/interfaces
@@ -9,4 +9,4 @@ iface vmbr0 inet static
 auto dummy1
 iface dummy1 inet static
         address 10.0.0.1/32
-        link-type dummy
\ No newline at end of file
+        link-type dummy
diff --git a/src/test/zones/evpn/multipath_relax/expected_controller_config b/src/test/zones/evpn/multipath_relax/expected_controller_config
index 1f6ff55..4a4617b 100644
--- a/src/test/zones/evpn/multipath_relax/expected_controller_config
+++ b/src/test/zones/evpn/multipath_relax/expected_controller_config
@@ -54,4 +54,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/multiplezones/expected_controller_config b/src/test/zones/evpn/multiplezones/expected_controller_config
index fcba273..ab3d851 100644
--- a/src/test/zones/evpn/multiplezones/expected_controller_config
+++ b/src/test/zones/evpn/multiplezones/expected_controller_config
@@ -52,4 +52,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/openfabric_fabric/expected_controller_config b/src/test/zones/evpn/openfabric_fabric/expected_controller_config
index caaa225..397655e 100644
--- a/src/test/zones/evpn/openfabric_fabric/expected_controller_config
+++ b/src/test/zones/evpn/openfabric_fabric/expected_controller_config
@@ -71,4 +71,4 @@ ip protocol openfabric route-map pve_openfabric
 !
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/ospf_fabric/expected_controller_config b/src/test/zones/evpn/ospf_fabric/expected_controller_config
index 1930eef..dd0e9d8 100644
--- a/src/test/zones/evpn/ospf_fabric/expected_controller_config
+++ b/src/test/zones/evpn/ospf_fabric/expected_controller_config
@@ -65,4 +65,4 @@ ip protocol ospf route-map pve_ospf
 !
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/rt_import/expected_controller_config b/src/test/zones/evpn/rt_import/expected_controller_config
index ab1471f..c5b6572 100644
--- a/src/test/zones/evpn/rt_import/expected_controller_config
+++ b/src/test/zones/evpn/rt_import/expected_controller_config
@@ -48,4 +48,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/vxlanport/expected_controller_config b/src/test/zones/evpn/vxlanport/expected_controller_config
index 8d265c8..d67552a 100644
--- a/src/test/zones/evpn/vxlanport/expected_controller_config
+++ b/src/test/zones/evpn/vxlanport/expected_controller_config
@@ -42,4 +42,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/simple/hetzner/interfaces b/src/test/zones/simple/hetzner/interfaces
index 5ab9635..53e894a 100644
--- a/src/test/zones/simple/hetzner/interfaces
+++ b/src/test/zones/simple/hetzner/interfaces
@@ -3,4 +3,4 @@ iface eth0 inet static
   address 144.76.0.1
   netmask 255.255.255.255
   pointopoint 172.31.1.1
-  gateway 172.31.1.1
\ No newline at end of file
+  gateway 172.31.1.1
-- 
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 pve-network] sdn: add missing new-line at the end of frr config and update tests
  2026-01-21  9:34 [pve-devel] [PATCH pve-network] sdn: add missing new-line at the end of frr config and update tests Hannes Laimer
@ 2026-01-21 10:56 ` Gabriel Goller
  2026-01-21 17:00 ` [pve-devel] applied: " Fiona Ebner
  1 sibling, 0 replies; 3+ messages in thread
From: Gabriel Goller @ 2026-01-21 10:56 UTC (permalink / raw)
  To: Hannes Laimer; +Cc: pve-devel

duplicate of https://lore.proxmox.com/pve-devel/20250919094122.73373-7-g.goller@proxmox.com/

but IMO we can already apply this one, so I can take it out of the
template series.

Consider:
Acked-by: Gabriel Goller <g.goller@proxmox.com>


_______________________________________________
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

* [pve-devel] applied: [PATCH pve-network] sdn: add missing new-line at the end of frr config and update tests
  2026-01-21  9:34 [pve-devel] [PATCH pve-network] sdn: add missing new-line at the end of frr config and update tests Hannes Laimer
  2026-01-21 10:56 ` Gabriel Goller
@ 2026-01-21 17:00 ` Fiona Ebner
  1 sibling, 0 replies; 3+ messages in thread
From: Fiona Ebner @ 2026-01-21 17:00 UTC (permalink / raw)
  To: pve-devel, Hannes Laimer

On Wed, 21 Jan 2026 10:34:55 +0100, Hannes Laimer wrote:
> We currently generate the FRR config file without a `\n` at the end, it
> works, but is technically not correct in UNIX. Most importantly when
> editing tests vim would add one when saving, this would then not match
> what we generate.

Applied with Gabriel's Acked-by, thanks!

[1/1] sdn: add missing new-line at the end of frr config and update tests
      commit: 3d9449686cd4a3427dda3e3ef9430b7630c3555b


_______________________________________________
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:[~2026-01-21 17:00 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-01-21  9:34 [pve-devel] [PATCH pve-network] sdn: add missing new-line at the end of frr config and update tests Hannes Laimer
2026-01-21 10:56 ` Gabriel Goller
2026-01-21 17:00 ` [pve-devel] applied: " Fiona Ebner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal