From 03a64d4591eab9c59f98e698a225adf2673100e3 Mon Sep 17 00:00:00 2001 From: jim-p Date: Fri, 6 Jul 2012 13:59:25 -0400 Subject: Fixup quagga's behavior for disabling redistribution of certain networks. Fixes #2542 --- config/quagga_ospfd/quagga_ospfd.inc | 40 +++++++++++++++++++++++------------- config/quagga_ospfd/quagga_ospfd.xml | 2 +- pkg_config.8.xml | 2 +- pkg_config.8.xml.amd64 | 2 +- 4 files changed, 29 insertions(+), 17 deletions(-) diff --git a/config/quagga_ospfd/quagga_ospfd.inc b/config/quagga_ospfd/quagga_ospfd.inc index b5a63bd0..40d73786 100644 --- a/config/quagga_ospfd/quagga_ospfd.inc +++ b/config/quagga_ospfd/quagga_ospfd.inc @@ -142,6 +142,21 @@ function quagga_ospfd_install_conf() { } + $redist = ""; + $noredist = ""; + if (is_array($ospfd_conf['row'])) { + foreach ($ospfd_conf['row'] as $redistr) { + if (empty($redistr['routevalue'])) + continue; + if (isset($redistr['redistribute'])) { + $noredist .= " access-list dnr-list deny {$redistr['routevalue']}\n"; + } else { + $area = ($redistr['routearea'] == "") ? $ospfd_conf['area'] : $redistr['routearea']; + $redist .= " network {$redistr['routevalue']} area {$area}\n"; + } + } + } + /* OSPF Settings */ $conffile .= "\n\nrouter ospf\n"; @@ -193,21 +208,18 @@ function quagga_ospfd_install_conf() { } } - if (is_array($ospfd_conf['row'])) { - foreach ($ospfd_conf['row'] as $redistr) { - if (empty($redistr['routevalue'])) - continue; - if (isset($redistr['redistribute'])) { - $conffile .= " no "; - } - if ($redistr['routearea'] == "") { - $conffile .= " network {$redistr['routevalue']} area {$ospfd_conf['area']}\n"; - } - else { - $conffile .= " network {$redistr['routevalue']} area {$redistr['routearea']}\n"; - } - } + if (!empty($redist)) + $conffile .= $redist; + + if (!empty($noredist)) { + $conffile .= " distribute-list dnr-list out connected\n"; + $conffile .= " distribute-list dnr-list out kernel\n"; + $conffile .= " distribute-list dnr-list out static\n"; + //$conffile .= " distribute-list dnr-list out ospf\n"; + $conffile .= $noredist; + $conffile .= " access-list dnr-list permit any\n"; } + } safe_mkdir($quagga_config_base); $fd = fopen("{$quagga_config_base}/ospfd.conf", "w"); diff --git a/config/quagga_ospfd/quagga_ospfd.xml b/config/quagga_ospfd/quagga_ospfd.xml index d3b6861f..d1e96efa 100644 --- a/config/quagga_ospfd/quagga_ospfd.xml +++ b/config/quagga_ospfd/quagga_ospfd.xml @@ -1,6 +1,6 @@ quagga_ospfd - 0.2 + 0.5 Services: Quagga OSPFd /usr/local/pkg/quagga_ospfd.inc pkg_edit.php?xml=quagga_ospfd.xml&id=0 diff --git a/pkg_config.8.xml b/pkg_config.8.xml index 1bc98388..895a17ba 100644 --- a/pkg_config.8.xml +++ b/pkg_config.8.xml @@ -1602,7 +1602,7 @@ Quagga OSPF OSPF routing protocol using Quagga -- WARNING! Installs files to the same place as OpenOSPFD. Installing both will break things. jimp@pfsense.org - 0.99.20.1 v0.4 + 0.99.20.1 v0.5 Routing BETA http://files.pfsense.org/packages/8/All/ diff --git a/pkg_config.8.xml.amd64 b/pkg_config.8.xml.amd64 index ff671064..a75022ed 100644 --- a/pkg_config.8.xml.amd64 +++ b/pkg_config.8.xml.amd64 @@ -1589,7 +1589,7 @@ Quagga OSPF OSPF routing protocol using Quagga -- WARNING! Installs files to the same place as OpenOSPFD. Installing both will break things. jimp@pfsense.org - 0.99.20.1 v0.4 + 0.99.20.1 v0.5 Routing BETA http://files.pfsense.org/packages/amd64/8/All/ -- cgit v1.2.3