diff --git a/net/frr/pkg-descr b/net/frr/pkg-descr index 01e0a13c6..efddc98ae 100644 --- a/net/frr/pkg-descr +++ b/net/frr/pkg-descr @@ -20,6 +20,8 @@ Plugin Changelog * Add description fields to BGP tabs * Add BGP community-lists +* Add option for BGP graceful restart +* Allow to set BGP neighbor timers 1.17 diff --git a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/BgpController.php b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/BgpController.php index 0f926cf22..68fb8c75b 100644 --- a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/BgpController.php +++ b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/Api/BgpController.php @@ -48,6 +48,9 @@ class BgpController extends ApiMutableModelControllerBase "updatesource", "nexthopself", "multihop", + "keepalive", + "holddown", + "connecttimer", "defaultoriginate", "linkedPrefixlistIn", "linkedPrefixlistOut", 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 b0128e5ff..d3bc6cca5 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 @@ -18,6 +18,13 @@ true In some cases it might be clearer to set a fixed router-id. + + bgp.graceful + + checkbox + true + BGP graceful restart functionality as defined in RFC-4724 defines the mechanisms that allows BGP speaker to continue to forward data packets along known routes while the routing protocol information is being restored. + bgp.networks diff --git a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/dialogEditBGPNeighbor.xml b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/dialogEditBGPNeighbor.xml index 6476f9ee9..7f170a4cb 100644 --- a/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/dialogEditBGPNeighbor.xml +++ b/net/frr/src/opnsense/mvc/app/controllers/OPNsense/Quagga/forms/dialogEditBGPNeighbor.xml @@ -38,7 +38,28 @@ checkbox - + + neighbor.keepalive + + text + true + Keepalive timer to check if the neighbor is still up. Default when unset is 60 seconds. + + + neighbor.holddown + + text + true + The time in seconds when a neighbor is considered dead. This is usually 3 times the keeplive timer and when unset 180 seconds. + + + neighbor.connecttimer + + text + true + The time in seconds how fast a neighbor tries to reconnect. + + neighbor.defaultoriginate checkbox 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 0abecfd3b..e1106e13e 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 @@ -1,7 +1,7 @@ //OPNsense/quagga/bgp BGP Routing configuration - 1.0.4 + 1.0.5 0 @@ -17,6 +17,10 @@ N /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/ + + 0 + Y + N @@ -70,6 +74,21 @@ 0 N + + N + 1 + 1000 + + + N + 3 + 3000 + + + N + 1 + 65000 + 0 N 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 e5d05085b..86a75860a 100644 --- a/net/frr/src/opnsense/service/templates/OPNsense/Quagga/bgpd.conf +++ b/net/frr/src/opnsense/service/templates/OPNsense/Quagga/bgpd.conf @@ -15,6 +15,9 @@ log syslog {{ OPNsense.quagga.general.sysloglevel }} {% if helpers.exists('OPNsense.quagga.bgp.asnumber') and OPNsense.quagga.bgp.asnumber != '' %} router bgp {{ OPNsense.quagga.bgp.asnumber }} no bgp ebgp-requires-policy +{% if helpers.exists('OPNsense.quagga.bgp.graceful') and OPNsense.quagga.bgp.graceful == '1' %} + bgp graceful-restart +{% endif %} {% if helpers.exists('OPNsense.quagga.bgp.routerid') and OPNsense.quagga.bgp.routerid != '' %} bgp router-id {{ OPNsense.quagga.bgp.routerid }} {% endif %} @@ -28,6 +31,14 @@ router bgp {{ OPNsense.quagga.bgp.asnumber }} {% if 'multihop' in neighbor and neighbor.multihop == '1' %} neighbor {{ neighbor.address }} ebgp-multihop {% endif %} +{% if 'keepalive' in neighbor and neighbor.keepalive != '' %} +{% if 'holddown' in neighbor and neighbor.holddown != '' %} + neighbor {{ neighbor.address }} timers {{ neighbor.keepalive }} {{ neighbor.holddown }} +{% endif %} +{% endif %} +{% if 'connecttimer' in neighbor and neighbor.connecttimer != '' %} + neighbor {{ neighbor.address }} timers connect {{ neighbor.connecttimer }} +{% endif %} {% endif %} {% endfor %} {% endif %}