From 674f0a6fa5680dc6dad3761e8aed370d0cad29a2 Mon Sep 17 00:00:00 2001
From: Monviech <79600909+Monviech@users.noreply.github.com>
Date: Mon, 3 Nov 2025 15:07:52 +0100
Subject: [PATCH] net/frr: BGP add bestpath route selection options (#5002)
---
.../mvc/app/controllers/OPNsense/Quagga/forms/bgp.xml | 7 +++++++
.../opnsense/mvc/app/models/OPNsense/Quagga/BGP.xml | 11 +++++++++++
.../service/templates/OPNsense/Quagga/bgpd.conf | 5 +++++
3 files changed, 23 insertions(+)
diff --git a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/bgp.xml b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/bgp.xml
index f515a7b71..09288f285 100644
--- a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/bgp.xml
+++ b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/bgp.xml
@@ -40,6 +40,13 @@
true
Defines connected networks to be advertised over BGP. Disable Network Import-Check to announce all networks.
+
+ bgp.bestpath
+
+ select_multiple
+ true
+ Route selection modifiers that influence the best path.
+
bgp.networkimportcheck
diff --git a/net/frr/src/opnsense/mvc/app/models/OPNsense/Quagga/BGP.xml b/net/frr/src/opnsense/mvc/app/models/OPNsense/Quagga/BGP.xml
index 2a7c33da9..a8df4dd41 100644
--- a/net/frr/src/opnsense/mvc/app/models/OPNsense/Quagga/BGP.xml
+++ b/net/frr/src/opnsense/mvc/app/models/OPNsense/Quagga/BGP.xml
@@ -33,6 +33,17 @@
Y
+
+
+ as-path confed
+ as-path multipath-relax
+ compare-routerid
+ peer-type multipath-relax
+ aigp
+ med missing-as-worst
+
+ Y
+
diff --git a/net/frr/src/opnsense/service/templates/OPNsense/Quagga/bgpd.conf b/net/frr/src/opnsense/service/templates/OPNsense/Quagga/bgpd.conf
index 5f64a9bc3..2f30ec1b6 100644
--- a/net/frr/src/opnsense/service/templates/OPNsense/Quagga/bgpd.conf
+++ b/net/frr/src/opnsense/service/templates/OPNsense/Quagga/bgpd.conf
@@ -42,6 +42,11 @@ router bgp {{ OPNsense.quagga.bgp.asnumber }}
{% if helpers.exists('OPNsense.quagga.bgp.graceful') and OPNsense.quagga.bgp.graceful == '1' %}
bgp graceful-restart
{% endif %}
+{% if OPNsense.quagga.bgp.bestpath %}
+{% for option in OPNsense.quagga.bgp.bestpath.split(',') %}
+ bgp bestpath {{ option }}
+{% endfor %}
+{% endif %}
{% if helpers.exists('OPNsense.quagga.bgp.routerid') and OPNsense.quagga.bgp.routerid != '' %}
bgp router-id {{ OPNsense.quagga.bgp.routerid }}
{% endif %}