public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Gabriel Goller <g.goller@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH network 2/4] sdn: add trailing newline in frr config
Date: Fri, 19 Sep 2025 11:41:18 +0200	[thread overview]
Message-ID: <20250919094122.73373-7-g.goller@proxmox.com> (raw)
In-Reply-To: <20250919094122.73373-1-g.goller@proxmox.com>

Add trailing newline to the end of frr config, it looks better this way.

Signed-off-by: Gabriel Goller <g.goller@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_loopback/expected_controller_config    | 2 +-
 src/test/zones/evpn/isis_standalone/expected_controller_config  | 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 +-
 24 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/src/PVE/Network/SDN/Frr.pm b/src/PVE/Network/SDN/Frr.pm
index 32ea37d813fb..ff46b6631328 100644
--- a/src/PVE/Network/SDN/Frr.pm
+++ b/src/PVE/Network/SDN/Frr.pm
@@ -222,7 +222,7 @@ sub raw_config_to_string {
     push @final_config, @$raw_config;
 
     push @final_config, (
-        "!", "line vty", "!",
+        "!", "line vty", "!", "",
     );
 
     return join("\n", @final_config);
diff --git a/src/test/zones/evpn/advertise_subnets/expected_controller_config b/src/test/zones/evpn/advertise_subnets/expected_controller_config
index 40d08465b1e2..08e47e86a2ec 100644
--- a/src/test/zones/evpn/advertise_subnets/expected_controller_config
+++ b/src/test/zones/evpn/advertise_subnets/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/disable_arp_nd_suppression/expected_controller_config b/src/test/zones/evpn/disable_arp_nd_suppression/expected_controller_config
index 4b5d628b65e2..5458aa17b854 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
@@ -41,4 +41,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 1629a2deb454..410e8af3e7b8 100644
--- a/src/test/zones/evpn/ebgp/expected_controller_config
+++ b/src/test/zones/evpn/ebgp/expected_controller_config
@@ -58,4 +58,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 fc8901de6173..2358937ffbf6 100644
--- a/src/test/zones/evpn/ebgp_loopback/expected_controller_config
+++ b/src/test/zones/evpn/ebgp_loopback/expected_controller_config
@@ -70,4 +70,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 02bb7609431b..631f3acd7b62 100644
--- a/src/test/zones/evpn/exitnode/expected_controller_config
+++ b/src/test/zones/evpn/exitnode/expected_controller_config
@@ -74,4 +74,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 96fb26d6a80f..3da3a79a44b3 100644
--- a/src/test/zones/evpn/exitnode_local_routing/expected_controller_config
+++ b/src/test/zones/evpn/exitnode_local_routing/expected_controller_config
@@ -60,4 +60,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 7ea32db093cf..d3d3da37803b 100644
--- a/src/test/zones/evpn/exitnode_primary/expected_controller_config
+++ b/src/test/zones/evpn/exitnode_primary/expected_controller_config
@@ -76,4 +76,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 02bb7609431b..631f3acd7b62 100644
--- a/src/test/zones/evpn/exitnode_snat/expected_controller_config
+++ b/src/test/zones/evpn/exitnode_snat/expected_controller_config
@@ -74,4 +74,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 a36da27ca756..6b9fc01e67c8 100644
--- a/src/test/zones/evpn/exitnodenullroute/expected_controller_config
+++ b/src/test/zones/evpn/exitnodenullroute/expected_controller_config
@@ -117,4 +117,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 4b5d628b65e2..5458aa17b854 100644
--- a/src/test/zones/evpn/ipv4/expected_controller_config
+++ b/src/test/zones/evpn/ipv4/expected_controller_config
@@ -41,4 +41,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 4b5d628b65e2..5458aa17b854 100644
--- a/src/test/zones/evpn/ipv4ipv6/expected_controller_config
+++ b/src/test/zones/evpn/ipv4ipv6/expected_controller_config
@@ -41,4 +41,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 4b5d628b65e2..5458aa17b854 100644
--- a/src/test/zones/evpn/ipv4ipv6nogateway/expected_controller_config
+++ b/src/test/zones/evpn/ipv4ipv6nogateway/expected_controller_config
@@ -41,4 +41,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 4b5d628b65e2..5458aa17b854 100644
--- a/src/test/zones/evpn/ipv6/expected_controller_config
+++ b/src/test/zones/evpn/ipv6/expected_controller_config
@@ -41,4 +41,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 d7c693a2e213..7b9d73784482 100644
--- a/src/test/zones/evpn/ipv6underlay/expected_controller_config
+++ b/src/test/zones/evpn/ipv6underlay/expected_controller_config
@@ -41,4 +41,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 efe2d43cd583..77499476570e 100644
--- a/src/test/zones/evpn/isis/expected_controller_config
+++ b/src/test/zones/evpn/isis/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/isis_loopback/expected_controller_config b/src/test/zones/evpn/isis_loopback/expected_controller_config
index b9d9c2969421..4cdfb9354c8d 100644
--- a/src/test/zones/evpn/isis_loopback/expected_controller_config
+++ b/src/test/zones/evpn/isis_loopback/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_standalone/expected_controller_config b/src/test/zones/evpn/isis_standalone/expected_controller_config
index bab5ec9119a2..0739cb5e1b3a 100644
--- a/src/test/zones/evpn/isis_standalone/expected_controller_config
+++ b/src/test/zones/evpn/isis_standalone/expected_controller_config
@@ -18,4 +18,4 @@ router isis isis1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
diff --git a/src/test/zones/evpn/multipath_relax/expected_controller_config b/src/test/zones/evpn/multipath_relax/expected_controller_config
index 7dff84cdd057..a72c48167161 100644
--- a/src/test/zones/evpn/multipath_relax/expected_controller_config
+++ b/src/test/zones/evpn/multipath_relax/expected_controller_config
@@ -53,4 +53,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 849d36a07e35..f7df034c5c34 100644
--- a/src/test/zones/evpn/multiplezones/expected_controller_config
+++ b/src/test/zones/evpn/multiplezones/expected_controller_config
@@ -51,4 +51,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 cff540311c8b..ad13359b23d4 100644
--- a/src/test/zones/evpn/openfabric_fabric/expected_controller_config
+++ b/src/test/zones/evpn/openfabric_fabric/expected_controller_config
@@ -70,4 +70,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 fd3651e1275c..c124c3aa33c7 100644
--- a/src/test/zones/evpn/ospf_fabric/expected_controller_config
+++ b/src/test/zones/evpn/ospf_fabric/expected_controller_config
@@ -64,4 +64,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 a4c0c6605d70..8dc74560e66c 100644
--- a/src/test/zones/evpn/rt_import/expected_controller_config
+++ b/src/test/zones/evpn/rt_import/expected_controller_config
@@ -47,4 +47,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 4b5d628b65e2..5458aa17b854 100644
--- a/src/test/zones/evpn/vxlanport/expected_controller_config
+++ b/src/test/zones/evpn/vxlanport/expected_controller_config
@@ -41,4 +41,4 @@ route-map MAP_VTEP_OUT permit 1
 exit
 !
 line vty
-!
\ No newline at end of file
+!
-- 
2.47.3



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


  parent reply	other threads:[~2025-09-19  9:41 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-19  9:41 [pve-devel] [RFC network/ve-rs 0/8] Template-based FRR config generation Gabriel Goller
2025-09-19  9:41 ` [pve-devel] [PATCH ve-rs 1/4] frr: add templates and structs to represent the frr config Gabriel Goller
2025-09-19  9:41 ` [pve-devel] [PATCH ve-rs 2/4] sdn-types: forward serialize to display for NET Gabriel Goller
2025-09-19  9:41 ` [pve-devel] [PATCH ve-rs 3/4] ve-config: fabrics: use new proxmox-frr structs to generate frr config Gabriel Goller
2025-09-19  9:41 ` [pve-devel] [PATCH ve-rs 4/4] tests: always prepend the frr delimiter/comment "!" to the block Gabriel Goller
2025-09-19  9:41 ` [pve-devel] [PATCH network 1/4] sdn: remove duplicate comment line '!' in frr config Gabriel Goller
2025-09-19  9:41 ` Gabriel Goller [this message]
2025-09-19  9:41 ` [pve-devel] [PATCH network 3/4] sdn: tests: add missing comment " Gabriel Goller
2025-09-19  9:41 ` [pve-devel] [PATCH network 4/4] tests: use Test::Differences to make test assertions Gabriel Goller

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=20250919094122.73373-7-g.goller@proxmox.com \
    --to=g.goller@proxmox.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
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal